Salut à tous,
J’ai des Users et des Products, je voudrais enregistrer chaque visite
d’un User d’une page Product.
J’ai:
users(id, name)
products(id,name)
Pour la gestion des visites, j’hésite entre:
visits(id,user_id,product_id,visited_on)
avec user has_many :visits
et visit belongs_to :user
et product has_many :visits
ou
visits(user_id,product_id,visited_on)
avec user has_many :visits through products
mais je ne suis pas très sûr comment gérer cette dernière.
et visit belongs_to :user
et product has_many :visits
Les choix ne sont pas énormes, la vrai question est plutôt une entrée
par visite et par utilisateur ou une entrée par couple visite/user et
un compteur que tu incrémentes à chaque visite avec éventuellement un
last_visite_at (si tu positionnes bien les index ca devrait être plus
scalable qu’un insert et il est légèrement plus simple d’éviter de
compter plusieurs fois la même visite mais en contre partie tu perds
l’historique)
Dans tous les cas ca te fait un visit
visit belongs_to :user, :product
product has_many visits
user has_many visits
ou
visits(user_id,product_id,visited_on)
avec user has_many :visits through products
mais je ne suis pas très sûr comment gérer cette dernière.
Ca n’est pas un ou ici, c’est un et car la config précédente est de
toute facon obligatoire pour cette partie. Ce n’est pas du tout la
même info que tu obtiens avec le has_many through
un user :has_many :products :through visits te donne les produits
visités (tu devras faire un :uniq suivant que oui ou non tu dupliques
les couples user/product)
et un product has_many user though visit te donne les utilisateurs
qui ont visité un product en particulier (même remarque que juste au
dessus pour le :uniq)
un user has_many visits through products n’a pas de signification et
est impossible (pas de relation entre user et product, enfin pas que
je sache ).
Je dit peut être une connerie, mais moi j’essaierai :
user
has_and_belongs_to_many : products
product
has_and_belongs_to_many : users
avec une table users_products
il faudrait voir car je ne suis pas sur si un champ updated_at peut se
remplir automatiquement, et ainsi tu aurais la dernière date de visite…
Renaud Morvan a écrit :
Pour la gestion des visites, j’hésite entre:
compter plusieurs fois la même visite mais en contre partie tu perds
visités (tu devras faire un :uniq suivant que oui ou non tu dupliques
Renaud
Version: 7.5.432 / Virus Database: 268.15.28/604 - Release Date:
26/12/2006 12:23
–
Guillaume BELLEGUIC
LES ACCORDEURS DE RESEAUX
e-ngoma / Ker data
4, cours Kennedy
35000 Rennes