Hi there, i have a model house and a model owner A house can have many owners. Now i want to find all owners of a specific street and i want to list them So i do: houses = House.find(:all, :conditions => ''street LIKE "%foo%"'') So now i got an array of all houses in that street @owners = houses[0].owner i''ve got all the owners of the first house. but i want from all houses so something like this: @owners = houses[:all].owner Does anyone know how to do this? Thanks in advance -- Posted via http://www.ruby-forum.com/.
piece of cake for ruby :-) owners = houses.map do |house| house.owner end> --- Urspr?ngliche Nachricht --- > Von: Daan <daan@fourbit.nl> > An: rails@lists.rubyonrails.org > Betreff: [Rails] all elements of an array > Datum: Thu, 6 Apr 2006 12:18:17 +0200 > > Hi there, > > i have a model house and a model owner > > A house can have many owners. > > Now i want to find all owners of a specific street and i want to list > them > > So i do: > > houses = House.find(:all, :conditions => ''street LIKE "%foo%"'') > > > So now i got an array of all houses in that street > > @owners = houses[0].owner i''ve got all the owners of the first house. > but i want from all houses so something like this: > > @owners = houses[:all].owner > > Does anyone know how to do this? > > Thanks in advance > > -- > Posted via http://www.ruby-forum.com/. > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails >
Peter Ertl wrote:> piece of cake for ruby :-) > > owners = houses.map do |house| house.owner endThnx for the reply. I forgot something to tell :) i use @owners = houses[0].owner.find(:all, :conditions => ''age > 30'', :limit => 100) i guess in your way i could do: owners = houses.map do |house| house.owner.find(:all, :conditions => ''age > 30'', :limit => 100) end but then the limit will not work. And in the end i want to use paginate as well.. :) You got a solution? -- Posted via http://www.ruby-forum.com/.
On Apr 6, 2006, at 3:25 AM, Daan wrote:> > i use > > @owners = houses[0].owner.find(:all, :conditions => ''age > 30'', :limit > => 100) > > i guess in your way i could do: > > owners = houses.map do |house| house.owner.find(:all, :conditions => > ''age > 30'', :limit => 100) end > > but then the limit will not work. And in the end i want to use > paginate > as well.. :) > > You got a solution?Something like this should work: owners = Owner.find(:all, :include => :house, :conditions => ''houses.street LIKE ''%foo%'' AND owners.age > 30'', :limit => 100) Hope that helps. Ryan
On Apr 6, 2006, at 8:48 AM, Ryan Bates wrote:> owners = Owner.find(:all, :include => :house, :conditions => > ''houses.street LIKE ''%foo%'' AND owners.age > 30'', :limit => 100)Sorry, forgot to use double quotes. That should be: owners = Owner.find(:all, :include => :house, :conditions => "houses.street LIKE ''%foo%'' AND owners.age > 30", :limit => 100) And remember to sanitize any user input (for example, if "foo" or "30" came from params). Ryan
Thanks a lot! -- Posted via http://www.ruby-forum.com/.
Daan wrote:> Hi there, > > i have a model house and a model owner > > A house can have many owners. > > Now i want to find all owners of a specific street and i want to list themYou can use a has_many :through to avoid all that mucking about with conditions: class Street < ActiveRecord::Base has_many :houses has_many :owners, :through => :houses end all_owners = a_street.owners -- Josh Susser http://blog.hasmanythrough.com -- Posted via http://www.ruby-forum.com/.