这个问题一定已经被问过百万次了,但我就是找不到答案:(
假设我有 3 个模型:
class Country
has_many :cities
end
class City
has_many :companies
end
class Company
belongs_to :city
end
我可以通过 获取给定城市中的公司City.first.companies
,但我想要的是能够获取给定国家/地区的所有公司,例如Country.first.companies
我能够实现的是在Country
模型中编写一个方法:
def companies
@companies = []
cities.all.each{ |c| @companies << c.companies unless c.companies.empty? }
@companies
end
但它返回 Company 对象数组的数组。我还可以将country_id
列添加为 Country 模型的 FK,例如
class Country
has_many :cities
has_many :companies
end
class Company
belongs_to :city
belongs_to :country
end
但这看起来不是很干燥。
我想接收给定国家/地区的公司对象数组。我很确定有一种 Rails 方法可以实现这一点。那会是什么?
谢谢!