在使用chartkick gem的应用程序中:
我有以下数据库表关系:
class User < ActiveRecord::Base
has_many :games
contains id, email
end
class Game < ActiveRecord::Base
has_many :levels
belongs_to :user
#contains id, user_id, name
accepts_nested_attributes_for :levels
end
class Level < ActiveRecord::Base
belongs_to :game
#contains id, score and game_id
end
我如何绘制每个玩家获得的分数?那么每个玩家每场比赛获得的平均得分是多少?
我想做类似的事情:
<%= column_chart Level.group(:user.email).sum(:score) %>
我设法做到了:
<%= column_chart Level.group(:game_id).sum(:score) %>
完整的代码可以在这里找到
“我如何绘制每个玩家获得的分数?”
首先将此添加到用户:
has_many :levels, :through => :games
然后通过以下方式获得每位玩家的总得分:
User.includes(:levels).group(:email).sum(:score)
“然后每个球员每场比赛获得的平均得分是多少?”
User.includes(:levels).group(:email, :game_id).average(:score)
这将返回一个以元组(电子邮件,game_id)为键,而平均值为值的哈希值。通过电子邮件分组只是为了能够在结果中重新获得一些用户标识,但是应该有一种更好的方式来实现。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句