That works, though it's definitely a good idea to sanitize which params can
be used in such a manner. Otherwise, someone could send params like {
:destroy_all => true } or something, and then there goes your database.
Pat

On Sat, Jul 4, 2009 at 1:07 PM, Matt Jones <[email protected]> wrote:

>
> You could try building up a chain of scopes - see this post:
>
>
> http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/a7df6a8b9628bb4b/d6b738f83084ec91?lnk=gst&q=scoped#d6b738f83084ec91
>
> As noted there, you can avoid cluttering up your model by using
> 'scoped' to create anonymous scopes.
>
> So your example would look like:
>
> # in the controller action
> proxy = Machine
> [:attr1, :attr2, :attr3].each do { |k|
>  proxy = proxy.scoped(:conditions => Hash[k, params[k]]) unless params
> [k].blank?
> }
> @machines = proxy.find(:all)
>
> That last find can also be a paginate, have limits, sorts, etc.
>
> --Matt Jones
>
> On Jul 2, 5:42 pm, jhaagmans <[email protected]> wrote:
> > In an app I'm working on, I want to have a filter in which you can
> > specify certain attributes and click "filter" to activate an AJAX
> > request and return a list of, say, machines that match with those
> > attributes.
> >
> > No I'm not sure how to build the controller.
> >
> > If I would specify all the attributes, I would simply do:
> >
> > def filter
> >   @machines = Machine.find(:all, :conditions => { :attr_1 => params
> > [:attr_1], :attr_2 ... }
> > end
> >
> > But how would I do this if only some of the attributes are specified
> > and the others are nil? Would I have to create @machines including all
> > machines and have Rails do the rest of the work or is there a way to
> > get find to do what I want?
> >
>

--~--~---------~--~----~------------~-------~--~----~
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 [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to