class State < ActiveRecord::Base
has_many :cities
end
class City < ActiveRecord::Base
has_many :zipcodes
belongs_to :state
end
class Zipcode < ActiveRecord::Base
belongs_to :city
end
当我尝试做的时候:
State.first.cities.zipcodes
我收到ActiveRecord::Associations::CollectionProxy
错误。
有没有人知道如何使用has_many关系深入多个级别?我确实使用through:
选项让这个工作正常,但无论如何都不使用through:
选项吗?
答案 0 :(得分:5)
为您的城市类添加另一个关联子句,如此
class State < ActiveRecord::Base
has_many :cities
has_many :zipcodes, through: :cities
end
然后你可以打电话
state.zipcodes
将返回给定州的所有邮政编码(通过关联城市)
答案 1 :(得分:0)
这样做
State.first.cities.first.zipcodes
这是因为State.first.cities
返回一个集合,因为它是州与城市之间的has_many关系
答案 2 :(得分:0)
不使用:through
,您需要遍历每个城市并找到其邮政编码:
State.first.cities.map(&:zipcodes)