2

我有帐户模型,

class Account < ActiveRecord::Base
  has_many :account_games
  def score
    account_games.map(&:score).sum
  end
end

和 AccountGame :

class AccountGame < ActiveRecord::Base
  belongs_to :account
end

获得最高分的帐户的最佳方法是什么?如您所见, score 是相关 account_games score 字段的总和。

谢谢

4

1 回答 1

1

尝试

Account.joins(:account_games).sum('account_games.score', group: :account_id, order: 'sum_account_games_score')

这将为您提供一个哈希值,其中键是 account_ids,值是总分。

您可以将限制选项传递给帐户以获取前 x 个帐户。就像是

Account.limit(10).joins(:account_games).sum('account_games.score', group: :account_id, order: 'sum_account_games_score DESC')
于 2013-02-21T08:07:29.977 回答