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スコアフィールドの合計です。

ありがとう

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 に答える