J'en profite pour ajouter d'autres points de vue sur la question.
http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/f8fda4fd2975a716#1ac5e277293b2754
On 1 oct, 10:52, Pierre Valade <[EMAIL PROTECTED]> wrote:
> @Yann : merci pour votre article.
>
> J'ai trouvé ça, très pratique :
>
> has_many :assets do
> def to_s
> self.join(',')
> end
> end
>
> Merci.
>
> On 1 oct, 10:03, "Yann KLIS" <[EMAIL PROTECTED]> wrote:
>
> > Mhmm... L'objet retourné par un appel à find n'est pas vraiment un
> > Array. C'est un "Association Proxy". Et on peut faire des choses
> > intéressantes avec cet objet. Il y a un très bon article en anglais à
> > ce sujet
> > :http://www.pivotalblabs.com/articles/2007/08/08/advanced-proxy-usage-...
> > (un peu trop long pour que je le traduise ou que je le résume).
>
> > ++
>
> > yk
>
> > Le 01/10/07, renaud morvan<[EMAIL PROTECTED]> a écrit :
>
> > > On 10/1/07,Pierre Valade<[EMAIL PROTECTED]> wrote:
>
> > > > Mais si je déclare une méthode dans Class Product, elle ne
> > > > s'appliquera pas à un array d'objet Product non ?
>
> > > La méthode classique est l'idom @products.collect &:method ce qui est
> > > équivalent à @ products.collect {|p| p.method }
>
> > > Malheureusement (?) un resultset dans rails n'est qu'une instance de Array
> > > donc si tu veux lui rajouter des methodes il te faudra l'encapsuler dans
> > > un
> > > objetProxy ou pour ton cas simple surcharger la classe Array.
>
> > > IMHO pour ton exemple @resultset.map &:destroy, @resultset.collect &:id ou
> > > même @resultset.find_all &:spam? sont suffisamment DRY, sans compter que
> > > dans le vrai monde ce genre de chose devrait être fait coté SQL pour
> > > éviter
> > > l'overhead.
>
> > > Maintenant si tu veux rajouter des fonctionnalités complexe genre
> > > pagination, taxonomy, import massif ou conversion, alors les décisions
> > > d'architectures sont à prendre au cas par cas, to_csv a plus sa place
> > > comme
> > > method d'instance de Array que next_page...
>
> > > Renaud
--~--~---------~--~----~------------~-------~--~----~
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]
-~----------~----~----~----~------~----~------~--~---