ORM : Table avec plusieurs associations

Bonjour, voila j’ai une class “Message” avec un champ “useridfrom” et
“useridto” pour savoir de qui vient et vers qui va le message.

Le probleme, je n’arrive pas a faire mes relations afin que depuis la
class user, je puisse recuperer les messages ou je suis dans useridto
SEULEMENT, je sais pas si c’est possible, au pire j’ecrirai la requete
mais j’aimera bien me servir entierement de l’outil.

Je debute, et j’ai encore un peu de difficulté avec l’ORM :frowning:

Merci d’avance :slight_smile:

Ce sont des relations belongs_to depuis le modèle Message parce que
c’est
lui qui porte les clefs étrangères.

Depuis la classe User, ce sont des has_many, parce que les clefs sont
dans
la table messages et qu’il peut y avoir plusieurs messages envoyés par
ou
destiné à un même utilisateur.

Ca t’aparaîtra certainement beaucoup plus clairement une fois lu ceci ne
serait-ce que transversalement :

Bonne lecture…

Michel B. wrote:

Ce sont des relations belongs_to depuis le modèle Message parce que
c’est
lui qui porte les clefs étrangères.

Depuis la classe User, ce sont des has_many, parce que les clefs sont
dans
la table messages et qu’il peut y avoir plusieurs messages envoyés par
ou
destiné à un même utilisateur.

Ca t’aparaîtra certainement beaucoup plus clairement une fois lu ceci ne
serait-ce que transversalement :
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

Bonne lecture…

Ok ca c’est bon ca marche, mais le probleme c’est que je voudrai avoir 2
objets user.
Si je fais 2 belongs_to il ne m’en prend que un en compte, logique.
Il faudrait que je passe pour des alias mais je n’ai rien trouvé la
dessus :frowning:

belongs_to a une option :class qui permet de dire quelle classe modèle
tu
veux associer, et une autre :foreign_key qui précise quelle champs
utiliser
comme clef.

Donc rien ne t’empêche de faire :
Message.belongs_to :sender, :class => User, foreign_key => :useridfrom
Message.belongs_to :recipient, :class => User, foreign_key => :useridto

2008/6/29 Alfref B. [email protected]:

destiné à un même utilisateur.
Il faudrait que je passe pour des alias mais je n’ai rien trouvé la
dessus :frowning:

il faut utilisé deux belongs_to différent et définir leur clé
étrangère et la classe d’association comme ceci :

belongs_to user_to, :class_name => “User”, :foreign_key => “useridto”
belongs_to user_from, :class_name => “User”, :foreign_key =>
“useridfrom”


Cyril M.
http://blog.shingara.fr