Bonjour,
J’ai des joueurs qui jouent à des jeux (jusque là…).
Ma relation n-n a été transformée en une double relation n-1 et 1-n, via une
entité “inscription”.
J’ai donc :
Joueur
has_many : inscriptions
Jeu
has_many : inscriptions
Inscription
belongs_to :joueur
belongs_to :jeu
Lorsque je dois répondre à la question “tel joueur est-il inscrit à tel jeu”,
je fais un truc style
Inscription.find(:all,:conditions=>“joueur_id=#{joueur.id} and
jeu_id=#{jeu.id}).size==1”
Je voudrais savoir si il y a un moyen plus “RoR”, et moins “SQL” (-;
Merci !
gUI
–
Pour la santé de votre ordinateur, préférez les logiciels libres !
Guillaume B. : (05 61) 19 40 65 / bureau 602N
Bonjour
En passant par l’option :through
ce qui va donner par exemple
Jeu
has_many : inscriptions
has_many: Joueurs, :through => inscriptions
Pour plus de détail l’api rails documente plutot bien cette fonction.
Le 03/01/07, Guillaume B.
[email protected]
a écrit :
En passant par l’option :through
Merci !!!
Pour plus de détail l’api rails documente plutot bien cette fonction.
J’y cours (-;
gUI
–
Pour la santé de votre ordinateur, préférez les logiciels libres !
Guillaume B. : (05 61) 19 40 65 / bureau 602N
Le 3 janv. 07 à 17:34, Guillaume B. a écrit :
Bonjour,
Bonjour,
Inscription
belongs_to :joueur
belongs_to :jeu
Lorsque je dois répondre à la question “tel joueur est-il inscrit à
tel jeu”, je fais un truc style
Inscription.find(:all,:conditions=>“joueur_id=#{joueur.id} and
jeu_id=#{jeu.id}).size==1”
Je dirais sans sql un truc du genre
Joueur
has_many :jeux, :though => :inscriptions
joe = Joueur.find(10)
jeu = Jeu.find(3)
joe.jeux.include?(jeu)
Et avec sql
Joueur
has_many :jeux, :though => :inscriptions do
def include?(jeu)
find(jeu.id) rescue false
end
end
et pareil
joe.jeux.include?(jeu)
pas testé mais à priori ca doit pas être trop loin de marcher
Renaud
pas testé mais à priori ca doit pas être trop loin de marcher
ca marche au poil (((-:
merci !
gUI
–
Pour la santé de votre ordinateur, préférez les logiciels libres !
Guillaume B. : (05 61) 19 40 65 / bureau 602N