0

我在 Heroku 上有一个带有 Rails 4 + Postgres 后端的游戏。我们的每日排行榜显示游戏中的最高 100 分。我们有一个用户模型和一个分数模型(用户 has_many :scores)。

它按预期工作,如下所示:

class Score < ActiveRecord::Base
  belongs_to :user

  def self.daily_leaders
    where(['created_at > ? and created_at < ?', Time.now.beginning_of_day, Time.now.end_of_day]).order("points DESC").limit(100)
  end
end

但是我们现在想改变它,让它只显示每个用户的最高分。我已经尝试了其他 .select() .distinct 和 .pluck ActiveRecord 方法的所有组合,但我总是遇到 PG 错误。

仅在今天获得每个用户的最高分的正确方法是什么?

4

1 回答 1

2
class Score < ActiveRecord::Base
  belongs_to :user

  def self.user_max_scores
    where('date(created_at) = ?', Date.today).select('user_id, max(points) as max_points').group(:user_id)
  end
end
于 2013-10-23T20:52:17.787 回答