【发布时间】:2012-10-14 03:25:58
【问题描述】:
我目前正在建立一个 NFL Pick'em 联赛网站。我有一个用户模型、一个游戏模型和一个连接表,用于捕获每个用户的个人选择。游戏模型有一个“结果”属性,其中包含“W”表示胜利、“L”表示失败、“P”表示推动(平局)。
我在构建排名页面时遇到了问题。我的用户模型中目前有两种方法:
def correct_games
self.games.where(result: "W").count
end
def total_games
self.games.where('result != ?', "P").count
end
correct_games 方法计算用户的正确选择。 total_games 方法计算总游戏数(不计算导致推送的游戏)。
那么在我看来,我目前对每个用户都有:<%= number_to_percentage(current_user.correct_games.to_f / current_user.total_games) %>
这个部门为我提供了该用户的胜率(# 正确/总选择)。对于我的积分榜,我显然想要按胜率降序排列。问题是排序的唯一解决方案似乎是使用 .order 方法,该方法通常需要一些属性已经在数据库中,然后您可以在控制器中调用。
我也尝试将这个胜率属性添加到数据库中,但我似乎无法找到一个回调来在游戏结果更新时更新用户的分数。
对视图中计算的属性进行排序或将此胜率添加到用户模型的方法的任何解决方案?
提前致谢!
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 sorting