Daan
April 6, 2006, 12:18pm
1
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
Daan
April 6, 2006, 12:21pm
2
piece of cake for ruby
owners = houses.map do |house| house.owner end
Daan
April 6, 2006, 12:25pm
3
Peter E. wrote:
piece of cake for ruby
owners = houses.map do |house| house.owner end
Thnx 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?
Daan
April 6, 2006, 5:49pm
4
On Apr 6, 2006, at 3:25 AM, Daan wrote:
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
Daan
April 6, 2006, 6:38pm
5
On Apr 6, 2006, at 8:48 AM, Ryan B. 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
Daan
April 6, 2006, 7:18pm
7
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 them
You 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 S.
http://blog.hasmanythrough.com