2016-07-13 1 views
0

has_many_throughという関連付けを持つ2つのモデル:RegionとItemがあります。予想通りオブジェクトのリストにあるアクティブなレコード関連オブジェクト

私は、書くことができます:

Region.find(4).items 

は私が達成しようとしていること。これは

undefined method `items' 

になり

Region.where(:id => [4,5,6]).items 

で行う簡単な方法はありますこの ?リージョンをループして結果を結合する以外の方法はありますか?

+0

この[質問]の場合と同じです(http://stackoverflow.com/questions/38337940/how-to-iterate-through-a-relation-in-a-single-line-in-rails-4/38337983#38337983) – lusketeer

+0

try Item.joins(:region).where( "region.id IN?"、[4,5,6]) – power

+0

これはトリック、感謝のパワーでした。 (ちょうど追加された()?) –

答えて

0

電源が示唆したように、これは私が必要なものである:

Item.joins(:regions).where("regions.id IN (?)", [4,5,6]) 

私は周りの()を追加しましたか?それが実際に働くようにする。

1

あなたはActiveRecordの関係を返すこのクエリ

Region.where(id: 2..5).includes(:hosts) 

これを試すことができます。各領域オブジェクトには、関連するホストがロードされます。

0

あなたは、単一のアレイは、その結果にflattenメソッドを呼び出したい場合は、この

result = Region.where(:id => [4,5,6]).map(&:items) 

を試してみてください。

関連する問題