Ruby on Rails Tuesday, September 28, 2010

Finally I still have a problem :

I used this definition for my "pseudo-named scope" :

def self.eval_filters(filters)
filters.inject(self) { |scope, filter| scope.send filter}
end

That works fine when I give some filters to the function but when
filters is an empty array, I lost the previous name scope.
Example :

Category.first.products.eval_filters("public_domain") -----> OK !
Category.first.products.eval_filters(nil) ------> return Product.all

When I use the debugger in the function, self is always an instance of
the class Product.

Any help please ?

Thanks a lot

adrien

NB: I use Rails 2.3.8

On Sep 24, 11:01 am, Adrien Coquio <adrien.coq...@gmail.com> wrote:
> Perfect solution !
> Thanks a lot :)
>
> adrien
>
> On Sep 24, 9:35 am, Frederick Cheung <frederick.che...@gmail.com>
> wrote:
>
>
>
> > On Sep 23, 9:29 pm, Adrien Coquio <adrien.coq...@gmail.com> wrote:
>
> > > Hi,
>
> > > I would like to return a combination of named scopes in a named
> > > scope :
>
> > > For example, I have a named scope filter and I want to add a named
> > > scope eval_filters like
>
> > > Product.eval_filters(['x','y','z']) is equivalent to
> > > Product.filter('x').filter('y').filter('z')
>
> > Well it wouldn't be a scope strictly speaking, but it would return a
> > scope and I believe you could call it on a scope:
>
> > def self.eval_filters(filters)
> >   filters.inject(self) { |scope, filter| scope.send filter}
> > end
>
> > > Anybody know how can I define the named_scope eval_filters to do
> > > that ?
>
> > > Thanks
>
> > > adrien :)

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment