ruby-on-rails-3 - 根据其关联模型的 SUM 对玩家进行排序

标签 ruby-on-rails-3 group-by associations sum has-many

我有一个 6500 players 的数据库每个玩家平均有15场比赛results .

用例

我想生成一个玩家列表,按 排序总和 他们的 奖品钱(结果表中的一个字段)。
我更喜欢将其置于某种范围内,因此我还可以过滤玩家所在国家/地区的列表等。

性能

我看过帖子提到 cache_counter性能领域。就我而言 我有数千条结果记录 (75.000+) 所以我不希望每次有人访问生成的列表时都进行计算。

问题

解决这个问题的最佳模式是什么?我该如何实现?

型号

class Player < ActiveRecord::Base
  has_many :results
end

class Result < ActiveRecord::Base
  belongs_to :player
end

架构
  create_table "players", :force => true do |t|
    t.string   "name"
    t.string   "nationality"
  end

  create_table "results", :force => true do |t|
    t.integer  "player_id"
    t.date     "event_date"
    t.integer  "place"
    t.integer  "prize"
  end

更新

我想要完成的是达到可以使用的程度:
@players = Player.order_by_prize


@players = Player.filter_by_country('USA').order_by_prize('desc')

最佳答案

你应该能够使用这样的东西:

class Player
 scope :order_by_prize, joins(:results).select('name, sum(results.prize) as total_prize').order('total_prize desc')  

引用 rails api - active record querying详情。

关于ruby-on-rails-3 - 根据其关联模型的 SUM 对玩家进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10526012/

相关文章:

php - 使用 group by 为报告(订单报告)编写单个 mysql 查询

ruby-on-rails - 如何使用 has_many :through association? 为所有者和成员建模

ruby-on-rails - 对象的属性

ruby-on-rails - getScript jQuery 路径不起作用/Ruby on Rails

pandas - 迭代 Groupby 对象的字段

uml - 组件-子组件关系还是泛化关系?在组件图 UML 中

ruby-on-rails-3 - 如何使用accepts_nested_attributes_for在Rails3中创建嵌套对象?

html - RoR3/HTML : Many check boxes, 对那些检查项目的不同操作,如何?

ruby-on-rails - 子域中的 Rails url 助手 - 删除子域

r - 如何在 R 中根据给定条件(累积和)对数据进行分组?