0

我试图在这里找出最佳路径,之前的问题并没有对此事有太多启发,但这可能是由于我的解释,所以我将尝试将其分解成更小的部分,以期获得更多的理解小块学习时的问题

适用范围

一个足球预测应用程序,用户可以在其中预测即将到来的比赛的比分。根据他们是否正确预测,他们将获得一些积分。每个用户都可以创建一个团队,然后该团队将成为联赛的一部分。

当前型号

class User
  has_many predictions #prediction model has user_id as FK
  has_many :teams #team model has user_id as FK
  attr_accessible :prediction_id
end    

class Team   
  belongs_to :user
  attr_accessible :team_name, :user_id, :key
end

class Prediction
  has_many fixtures #to allow predictions from multiple users<br> 
  attr_accessible :home_team, :away_team, :home_score, :away_score, :fixture_date, :fixture_id, :user_id
end

class Result
  attr_accessible :home_team, :away_team, :fixture_date, :home_score, :away_score
end

我的问题是我应该有一个单独的模型,例如点来存储从用户预测中获得的点吗?因此,例如,如果用户正确预测了分数,他们将获得 3 分。

Point模型中,我将具有属性

result_id, prediction_id, allocated_points

所以在这里我可以将预测与结果进行比较并分配积分..

任何建议都被赞赏为真的难倒这个

4

2 回答 2

0

我不认为这有正确/错误的答案。很难说没有看到每个模型的关联和属性,但我会从计算它们的点开始:

class Predication
  def correct?
    fixture.result == result
  end
end

class User
  def points
    predications.select(&:correct?).size * 3
  end
end

class Team      
  def points
    users.map(&:points).inject(&:+)
  end
end
于 2013-05-12T14:37:31.690 回答
0

我认为Point不应该是一个模型。它应该是用户表中的一列。您应该根据预测和结果计算点数,并更新关联用户的点数。

但这只是我的观点,我可能完全错了。

于 2013-05-12T15:26:02.103 回答