Вернуть id связанного объекта через pluck - PullRequest
0 голосов
/ 09 июня 2019

У меня есть модель City, в которой много списков.В списках много школ.Я пытаюсь найти все школьные номера в городе.

city.listings.joins(:schools).pluck(:name).uniq

возвращает названия всех школ в городе, как ожидалось.

, но

city.listings.joins(:schools).pluck(:id).uniq

возвращает list_ids для всех списков в городе, а не идентификаторы школ.

Как я могу получить school_ids?

Ответы [ 2 ]

2 голосов
/ 09 июня 2019

Возможно, вам будет проще пойти по другому пути:

School.where(listings: city.listings).pluck(:id)

И, предполагая, что вам нужно что-то сделать на основе этих школ, вы можете избежать полной загрузки идентификаторов и просто продолжать составлять запрос:

PerformanceReports
  .where(school: School.where(listings: city.listings))
  .order(score: :desc)
  .limit(5)
1 голос
/ 09 июня 2019
city.listings.joins(:schools).pluck('schools.id').uniq

сделает это за вас

Причина

city.listings.joins(:schools).pluck(:id)

возвращает запрос, начинающийся

select listings.id from listings inner join schools on .....

но

city.listings.joins(:schools).pluck('school.id')

дает запрос, начинающийся

select schools.id from listings inner join schools on .....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...