2012-01-26 11 views
0

静的な建物のリストがあります。これは単純にBuilding.allで取得します。都市には多くの建物があるので、実際にはすべての建物オブジェクトのリストを取得したいと思います。そのリストにはcity_buildingオブジェクトも含まれています。オブジェクトのリストを取得してオブジェクトを追加する

団体が(簡単な言語)です:

city has_many buildings 
city has_many city_buildings(city_id,building_id) (through buildings) 

私はのようなリストを取得したいと思います:

すべての建物を取得することなく、これを行うための効率的な方法は何
Building1 => nil (building does not exist in the city) 
Building2 => city_building1 
Building3 => city_building2 
Building4 => nil 

各city_buildingについて再度ループしますか?

+0

所属することはできますか?それは不思議そうですが、そうでない場合、なぜhas_many:throughですか?とにかく、私は関係のもう一つの側面を見たいと思います。 –

答えて

0

[OK]を、私は自分自身が、私はそれはいくつかの参考になると思います解決策を見つけたので、私はそれをここに書く:建物は、複数の都市に

Building.joins("LEFT OUTER JOIN city_buildings ON city_buildings.building_id = buildings.id").includes(:city_building) 
0

Building.include({:city_building =>:都市]})。ここで、( 'cities.name ='、 'foo' で)全て

UPDATE:私は後に、上記の答えを更新し、注意してください最初のコメントは、私が最初のリクエストの一部であると気づいていなかった要件を説明しました)

これはあなたが何をしていますか?

+0

実際には、これは都市を指定していません。私はこれをしたい、しかし特定の都市のために。 – Spyros

+0

これをチェックして、更新しました。助けて? –

+0

実際にはありません。これはcity.city_buildingsが返すものを返します。都市にあるかどうかにかかわらず、その都市にある建物だけが、すべての建物のリストではありません。 – Spyros

関連する問題