如何根据Rails中的连接表对结果进行排序?

时间:2013-02-21 08:04:31

标签: ruby-on-rails ruby-on-rails-3 rails-activerecord

我有帐户模型,

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

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

谢谢

1 个答案:

答案 0 :(得分: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')