【发布时间】:2014-05-31 13:02:20
【问题描述】:
我被困在 AREL 调用上,我正在尝试为带有 postgres 数据库的 Rails 4.1 应用程序编写。
我的应用具有 User 和 League(users 表和 Leagues 表)的 activerecord 类,它们通过 has_many 关系与 user_leagues 表连接。
我正在尝试在 League 上编写一个实例方法,该方法返回 这个联盟中的用户,按 user_leagues 表中的 end_score 列排序。我可以用 Ruby 做到这一点,但似乎用纯 AREL 应该可以做到。
在伪代码中:select * from users ...inner join user_leagues... group_by user_id order_by end_score
我最近的尝试:
def ranked_users
User.joins(:user_leagues).
where("user_leagues.league_id = ?", self.id).
group("user_leagues.user_id").order("user_leagues.end_score DESC")
end
我尝试了 group 和 distinct 的不同变体,但它们都返回了这个错误的一些变体:
PG::GroupingError: ERROR: column "users.id" must appear in the GROUP BY clause or be used in an aggregate function
有人知道怎么做吗?
【问题讨论】:
标签: ruby-on-rails ruby postgresql activerecord