Hi, In my application I have bots that have_many packs. Usually there is just a big list with each bot and its packs. I''d like to add a filter that shows only bots with packs matching a keyword (and only the matching packs from those bots). I have sincerely no idea how to do this properly. The following works, but I doubt it''s really the proper way of doing this: class Bot < ActiveRecord::Base has_many :packs, :order => ''number'' def self.search(search) has_many :packs, :order => ''number'', :conditions => [''name LIKE ?'', search] end end Any help will be much appreciated! Regards, Iikka -- Posted via http://www.ruby-forum.com/.
Your example is a bit odd, are you trying to find all the packs of a bot which match the given name... ? If so: class Bot < ActiveRecord::Base has_many :packs, :order => ''number'' def search_packs(keyword) packs.find(:all, :conditions => [''name like ?'', "%#{keyword}%"]) end end Then you can do ... Bot.find(:first).search_packs(''mine''). Or if you just want to find all the Pack objects by a certain name, do: Pack.find(:all, :conditions => [''name like ?'', "%wonka%"]) Cheers, -Jonny.> this: > > class Bot < ActiveRecord::Base > has_many :packs, :order => ''number'' > def self.search(search) > has_many :packs, :order => ''number'', :conditions => [''name LIKE ?'', > search] > end > end >-- Posted via http://www.ruby-forum.com/.
Thanks for your answer! Jonathan Viney wrote:> Your example is a bit odd, are you trying to find all the packs of a bot > which match the given name... ?I''m trying to find all bots with packs that match the given name. For these bots only the matching packs should be returned. I hope this makes it a bit clearer. Regards, Iikka -- Posted via http://www.ruby-forum.com/.