1

私が次のようなものを持っているとしましょう

Country has_many :cities

モデルCityには属性がありますcouncil_id。のインスタンスしかない場合Country、関連するすべての を含むコレクションを取得する最良の方法は何Councilsですか?

Countryこれは、インスタンスを何らかのメソッドに渡して反復することで簡単に実行できることを知っていますcouncil_idsが、もっとエレガントな方法があるかどうか疑問に思っていましたか?

ありがとう

4

3 に答える 3

5

市が持っている場合

belongs_to :country
belongs_to :council

その後、国は持つことができます

has_many :cities
has_many :councils, :through => :cities

そして、あなたはすることができますsome_country.councils。舞台裏では、これは関連する評議会をロードするための結合クエリを構築します。都市に多くの評議会があった場合でも、これは機能します-has_many :throughそれを理解することができます

于 2012-06-24T09:19:52.143 に答える
0

これは私が考えることができる最短の方法です (@countryインスタンスを設定したと仮定します):

Council.joins(:city => :countries).where('countries.id = ?', @country.id)

country_idただし、これを簡単にするために、 for each Council を保存したい場合があります。

@country.councils
于 2012-06-24T08:13:46.110 に答える
0

評議会がモデルの場合は、次のことを試してください。

Council.where(city_id: @country.cities)

Council_id が City モデルの属性の場合:

@country.cities.map {|c| c.council_id}
于 2012-06-24T08:57:37.317 に答える