通过pluck返回关联对象的ID

时间:2019-06-08 23:53:09

标签: ruby-on-rails postgresql ruby-on-rails-5

我有一个示范城市,里面有很多房源。列表中有很多学校。我正在尝试查找城市中的所有school_id。

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

按预期返回城市中所有学校的名称。

但是

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

返回城市中所有列表的listing_id,而不是学校的id。

如何获取school_ids

2 个答案:

答案 0 :(得分:2)

您可能会发现走另一条路更容易:

char*

并假设您需要根据这些学校来做某事,则可以避免完全加载ID,而只需继续编写查询即可:

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

答案 1 :(得分:1)

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 .....