在Rails中使用group by时如何返回填充的模型?

时间:2017-08-16 15:18:18

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

我想知道是否有办法在单个查询中执行以下操作?

1) non_populated_models = PropertyPerson.select("property_people.id, count('items.recipient_person_id')").joins(:items).group('items.recipient_person_id, property_people.id')
2) populated_models = PropertyPerson.where(id: [non_populated_models])

目前,第一个按查询分组只返回id,并在ProperyPerson对象中计数。假设模型中有15个字段,我不想明确地将它们全部写出来。有没有办法可以在一个查询中执行此操作?

1 个答案:

答案 0 :(得分:1)

加入将使用property_people将查询限制为item,您将获得attr_reader的额外列。

people = PropertyPerson.select("property_people.*,
                                count('items.recipient_person_id') as items_count")
                       .joins(:items)
                       .group("property_people.id")

people.first.item_count