我有以下关联:
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
答案 0 :(得分:0)
我认为你想要ORDER BY而不是GROUP BY。 GROUP BY是你要使用sum()和count()等聚合函数的时候。
答案 1 :(得分:0)
Rails不会像直接sql一样工作,所以你需要做一些事情才能获得理想的行为。
首先,创建查询以获取所有结果。或许像Page.ads.approvals
这样的东西。 ads
可能需要ad
其次为结果实现分页,最好是通过像will_paginate或kaminari这样的宝石。