如何返回在Rails中分组的对象?

时间:2014-06-02 23:24:04

标签: sql ruby-on-rails

我有以下关联:

Approval belongs_to Ad
Ad has_many Approvals
Ad belongs_to Page
Page has_many Ads

我希望获得所有批准但按页面分组。因此,稍后,我可以遍历每个页面并打印属于该页面的每个广告的所有批准。

如果我试试这个:

Approval.includes(:ad).group_by('ads.page_id')

我明白了:

PG::GroupingError: ERROR:  column "approvals.id" must appear in the GROUP BY clause or be used in an aggregate function

2 个答案:

答案 0 :(得分:0)

我认为你想要ORDER BY而不是GROUP BY。 GROUP BY是你要使用sum()和count()等聚合函数的时候。

答案 1 :(得分:0)

Rails不会像直接sql一样工作,所以你需要做一些事情才能获得理想的行为。

首先,创建查询以获取所有结果。或许像Page.ads.approvals这样的东西。 ads可能需要ad

其次为结果实现分页,最好是通过像will_paginate或kaminari这样的宝石。