find on a chained relationship

The Rails API documentation indicates that you can go through a has_many association so you should be able to write:

class Person < ActiveRecord::Base
belongs_to : city
end

class City < ActiveRecord::Base
has_many :people
belongs_to :county
end

class County < ACtiveRecord::Base
has_many :cities
has_many :people, :through => :cities
end

@people = County.find(:first).people

More details here in "Association Join Models": http://www.rubyonrails.org/api/classes/ActiveRecord/Associations/ClassMethods.html

Simon

Anthony Walsh wrote:

Anthony Walsh wrote:

Is there a way to find with multiple ids?
i.e. @people = County.find(:all, :condtions => "id=3 OR id=5").people

I've tried this an it fails.
  

when you use find (:all) you are getting always an array (empty or not), so you cannot do find(:all).people, since you need to ask for the "people" key of a given index in your array.

If you try this, everything will be fine

arr_people = County.find(:all, :conditions => "id=3 OR id=5")
@people = arr_people[0].people unless arr_people.blank?

if you need to iterate over the results to find all the "people" values, you can just use .each over arr_people.

and finally, if you want to get different rows given several id's, it's not necessary to use the :conditions param. Find will work fine if you pass an id,a list or an array of id's. (http://api.rubyonrails.com/classes/ActiveRecord/Base.html#M000860)

you could just do

arr_people = County.find (3,5)
@people = arr_people[0].people unless arr_people.blank?

regards,

j