Ruby on rails 从rails中的自定义类方法调用变量

Ruby on rails 从rails中的自定义类方法调用变量,ruby-on-rails,Ruby On Rails,我是初学者。有一个自定义的类方法,可以计算a队和b队在比赛中获胜的概率。在我看来,我想显示这些计算。试着把这些和我对它如何工作的有限理解结合起来 #team.rb 班队 属性读取器:主队获胜概率;客队获胜概率 def自配(主队、客队) 主队获胜概率=(主队得分-主队得分*客队得分)/(主队得分)+客队得分-2*主队得分*客队得分) 客场球队获胜概率=1-主场球队获胜概率 结束 结束 #团队控制器.rb 类TeamsController未定义的方法home\u team\u win\u proba

我是初学者。有一个自定义的类方法,可以计算a队和b队在比赛中获胜的概率。在我看来,我想显示这些计算。试着把这些和我对它如何工作的有限理解结合起来

#team.rb
班队
属性读取器:主队获胜概率;客队获胜概率
def自配(主队、客队)
主队获胜概率=(主队得分-主队得分*客队得分)/(主队得分)+客队得分-2*主队得分*客队得分)
客场球队获胜概率=1-主场球队获胜概率
结束
结束
#团队控制器.rb
类TeamsController<应用程序控制器
def匹配
@团队a=团队。查找团队(排名:2)
@团队b=团队。查找团队(排名:1)
@配对=团队。配对(@Team_a,@Team_b)
结束
结束
#matchups.html.erb
配对:@
#想做这样的事情:
主队获胜概率:
客队获胜概率:
@matchup.home\u team\u win\u probability
产生错误,因为@matchup只返回最后一行(本例中为客场球队概率)
@matchup.home\u team\u win\u probability=>未定义的方法home\u team\u win\u probability for#返回哈希值:

def self.matchup(home_team, away_team)
    home_team_win_probability = (home_team.rating - home_team.rating * away_team.rating) / (home_team.rating) + away_team.rating - 2 * home_team.rating * away_team.rating)
    away_team_win_probability = 1 - home_team_win_probability
    {home: home_team_win_probability, away: away_team_win_probability}
end
然后访问:

@matchup[:home]
@matchup[:away]

没有特别的理由需要在团队模型中使用匹配逻辑。我会创建一个新的模型

class Matchup
  attr_accessor :home_team, :away_team
  def initialize(home_team, away_team)
    @home_team = home_team
    @away_team = away_team
  end
  def home_team_win_probability
    (home_team.rating - home_team.rating * away_team.rating) / (home_team.rating) + away_team.rating - 2 * home_team.rating * away_team.rating)
  end
  def away_team_win_probability 
    1 - home_team_win_probability
  end
end
现在,您可以在
团队控制器中执行此操作

@matchup = Matchup.new(@team_a, @team_b)

这为您提供了方法
@matchup.home\u team\u probability
@matchup.away\u team\u probability

这非常有效,非常简单。虽然将我的配对逻辑转移到其他地方可能是有意义的,但考虑到我已经拥有的,这是一个非常方便的答案。非常感谢。