conditions and joins and paginate, oh my!

I'm starting off with something that already works, and trying to add another condition to it. I just can't seem to find an example of the proper syntax to make this happen.

In this case, I have users, and users have many contacts and contacts have and belong to many groups. Up til now I've just been searching for (and paginating) a set of contacts that belong to this user that are "LIKE" my search term. Now I want to also limit the selection by which groups a contact belongs to.

So far I've been finding a set of contacts to show like this:

@contacts = @current_user.contacts.paginate(:all, :conditions => ["name LIKE ?", search_term])

Now I want to add to that, a selection based on a group, so, in pseudo syntax that might look something like this:

@contacts = @current_user.contacts.paginate(                                          :all,                                          :conditions => ["name LIKE ?", search_term],                                          :joins => :group,                                          :more_conditions => {:groups => {:group.id => selected_group}})

How do I hook these two different types of conditions together?

Thanks!

Jeff,           Visit this page, it will really help you in solving your problem

In case of any queries you can reply on that blog or on this form any time.

Thanks & Regards, Shahroon Ali Khan

shoni khan wrote:

Jeff,          Visit this page, it will really help you in solving your problem The Opera Blog - News | Opera In case of any queries you can reply on that blog or on this form any time.

Thanks & Regards, Shahroon Ali Khan

thanks very much. I will check it out.

It is however terrible advice. Fetching all rows into memory and then
paginating that array could absolutely kill you.

You can merge conditions with the merge_conditions class method on
ActiveRecord::Base (which is private on 2.1, but not 2.2. You can
always call it from one of your model's class methods. Or you can just
build up array based conditions by hand.

Fred

Frederick Cheung wrote:

Shahroon Ali Khan

thanks very much. I will check it out.

It is however terrible advice. Fetching all rows into memory and then paginating that array could absolutely kill you.

You can merge conditions with the merge_conditions class method on ActiveRecord::Base (which is private on 2.1, but not 2.2. You can always call it from one of your model's class methods. Or you can just build up array based conditions by hand.

Fred

Thanks Fred, Will that merge_conditions method deal with different styles of conditions?, like: :conditions => ["name LIKE ?", search_term] and conditions => {:groups => {:group.id => selected_group}}

I don't know how to translate either one of these into the other form.

thanks, jp