Forum: Rails France Chercher l'existence d'une relation n-1-1-n

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Guillaume B. (Guest)
on 2007-01-03 18:37
(Received via mailing list)
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
Bastien Q. (Guest)
on 2007-01-03 18:43
(Received via mailing list)
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.
<removed_email_address@domain.invalid>
a écrit :
Guillaume B. (Guest)
on 2007-01-03 18:47
(Received via mailing list)
> 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
Renaud Morvan (Guest)
on 2007-01-03 18:49
(Received via mailing list)
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
Guillaume B. (Guest)
on 2007-01-04 10:52
(Received via mailing list)
> 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
This topic is locked and can not be replied to.