gpt4 book ai didi

ruby-on-rails - 如何对计算出的值排序?

转载 作者:行者123 更新时间:2023-12-04 03:59:15 25 4
gpt4 key购买 nike

我目前正在建立一个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方法,该方法通常需要数据库中已有一些属性,然后您可以在 Controller 中调用该属性。

我也尝试过将赢率百分比属性添加到数据库中,但是我似乎无法弄清楚每当游戏结果更新时都会更新用户得分的回调。

对 View 中计算的属性进行排序或将赢率添加到用户模型的方法有什么解决方案?

提前致谢!

最佳答案

为什么不只在模型中而不是在 View 中进行计算?添加另一个这样的方法:

此代码适用于您的用户模型:

def percentage_correct
((self.correct_games.to_f / self.total_games) * 100).to_i
end

def self.sorted_by_percentage_correct
User.all.sort_by(&:percentage_correct).reverse
end

这是您在 View 中使用它的方式:
<% User.sorted_by_percentage_correct.each do |u| %>
<div><%= u.name %> has pick percentage of <%= u.percentage_correct %>%</div>
<% end %>

关于ruby-on-rails - 如何对计算出的值排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12879040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com