我在 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 错误。
仅在今天获得每个用户的最高分的正确方法是什么?