Получить список объектов, а затем добавить больше объектов - PullRequest
0 голосов
/ 26 января 2012

У меня есть список статических зданий, которые я получаю просто с помощью 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?

Ответы [ 2 ]

0 голосов
/ 27 января 2012

Хорошо, я нашел решение сам, думаю, это будет полезно для некоторых, поэтому я пишу его здесь:

Building.joins("LEFT OUTER JOIN city_buildings ON city_buildings.building_id = buildings.id").includes(:city_building)
0 голосов
/ 26 января 2012

Building.include ({: city_building => [: city]}). Where ('towns.name =?', 'Foo'). All

ОБНОВЛЕНИЕ: Обратите внимание, я обновил вышеуказанный ответпосле того, как первый комментарий объяснил требование, которое я не осознал, было частью первоначального запроса)

Делает ли это то, что вам нужно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...