2008/8/24 Fabien Jakimowicz <[EMAIL PROTECTED]>:
> 2008/8/24 guillaume <[EMAIL PROTECTED]>:
>>
>> Je vais prendre un exemple p-e plus claire :)...
>>
>> j'ai un model "Video".
>> j'ai aussi trois model : "Auteur", "Difficulte" et "logiciel"
>>
>> Dans "Video" j'ai un habtm du type :
>> Has_and_belongs_to_many :auteurs, :difficultes, :logiciels
>> et dans chacun de ces trois model j'ai :
>> has_and_belongs_to_many :videos
>>
>> Je cherche maintenant à trouver l'ensemble des "vidéos" qui ont comme
>> auteur "@auteur", comme difficulte "@difficulte" et comme logiciel
>> "@logiciel"....
>>
>> Si je ne cherchais que les vidéos qui ont comme auteur "@auteur" je
>> ferais :
>> @auteur.videos.find(:all)..
>>
>> Sauf que la je veux tout en même temps, soit qqch du style :
>> Video.find(:all)[EMAIL PROTECTED]@[EMAIL PROTECTED]
>>
>> Sauf que cette synthaxe ne marche pas !....
>>
>> Une idée ?
>>
>
> Méthode brute : tu peux utiliser Video.find(:all, :include =>
> [:auteurs, :logiciels, difficulte], :conditions => ["auteur_id =
> :auteur_id AND difficulte_id = :difficulte_id AND logiciel_id =
> :logiciel_id", {:auteur_id => @auteur.id, :difficulte_id =>
> @difficulte.id, :logiciel_id => @logiciel.id}).
>
> Tu peux aussi utiliser un named_scope sur le modèle video pour laisser
> ton code SQL dans les modèles. Je te conseille tout de même de
> vérifier que tu as besoin d'instancier @auteur, @difficulte et
> @logiciel ...
plus lisible:
Video.find :all,
:include => [:auteurs, :logiciels, difficulte],
:conditions => ["auteur_id = :auteur_id
AND difficulte_id = :difficulte_id
AND logiciel_id = :logiciel_id",
{:auteur_id => @auteur.id, :difficulte_id =>@difficulte.id,
:logiciel_id => @logiciel.id}
--
http://fabien.jakimowicz.com
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---