Gestion des visites


#1

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.

Merci d’avance

Pat


#2

Le 26 déc. 06 à 17:40, Patrick A. a écrit :

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 :slight_smile: ).

Renaud


#3

Bonjour,

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

removed_email_address@domain.invalid
http://www.e-ngoma.net

tèl : +33 (0)299 33 87 48
fax : +33 (0)299 33 97 31

RCS Rennes 487 799 892



#4

Je sais pas pourquoi mais lier des users et des products … je trouve
ça moyen moyen :confused:

Alors que créer une table visite, qui concerne un user, un produit à
une date donnée, tout parait plus logique


#5

Guillaume :

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

Au passage, je tiens à te signaler que les tables de jointures
pour une association habtm suivent par convention
l’ordre alphabétique, ie ‘products_users’.

РJean-Fran̤ois.


#6

Autant pour moi…
Jean-François a écrit :

Au passage, je tiens à te signaler que les tables de jointures
http://lists.rubyonrails.fr/mailman/listinfo/railsfrance


No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.432 / Virus Database: 268.16.8/621 - Release Date: 09/01/2007 13:37

Guillaume BELLEGUIC
LES ACCORDEURS DE RESEAUX
e-ngoma / Ker data
4, cours Kennedy
35000 Rennes

removed_email_address@domain.invalid
http://www.e-ngoma.net

tèl : +33 (0)299 33 87 48
fax : +33 (0)299 33 97 31

RCS Rennes 487 799 892