dans ton message tu dis que ta methode c'est un genre de
default_scope, alors pourquoi pas la refactorer en vrai default_scope?

2011/10/2 guillaume <[email protected]>:
> Bonjour à tous,
> Je suis en phase de migration vers Rails 3 et je viens de tomber sur un
> problème avec mon appli.
> Dans un de mes modeles je fais :
>   class << self
>     def apply_language_scope(lang = "fr")
>       lt = Lang.find(:all, :conditions=>["short_name IN (?)",lang])
>       self.scoped_methods[0] = {:find => {:conditions => ['videos.lang_id IN
> (?)', lt.map(&:id)]}}
>     end
>   end
> Ceci me permet de gérer l'affichage de mon contenu suivant la lang ou les
> langs choisies. Une sorte de default_scope.
> Le pb est que sous Rails 3 quand j'appel ma fonction apply_language_scope
> j'ai ensuite comme erreur :
> ruby-1.9.2-p290 :002 > Video.apply_language_scope
>  => {:find=>{:conditions=>["videos.lang_id IN (?)", [1]]}}
> ruby-1.9.2-p290 :005 > Video.find(:first)
> NoMethodError: undefined method `includes_values' for
> {:find=>{:conditions=>["videos.lang_id IN (?)", [1]]}}:Hash
> A priori je pense que cela est du au formatage de ma condition
> dans scoped_methods[0] que Rails 3 n'aime pas.
> J'ai tenté plusieurs variantes à base e where, en suppr find etc. mais sans
> succès.
>
> D'avance merci si vous avez une idée !
> PS : Migrer vers Rails 3 c'est pas la joie :)
>
> --
> 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]



-- 
Nicolas Blanco, Web developper

http://www.nicolasblanco.fr
Jabber/GoogleTalk : [email protected]
Twitter : http://twitter.com/slainer68
Github : http://github.com/slainer68
Skype : slainer68

-- 
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]

Répondre à