建立正确的模型关联Rails 3



我试图找出这里的最佳路径,之前的问题没有透露太多的问题,但这可能是由于我的解释,所以我要试着把它分解成更小的块,希望能在学习小块的同时,更多地了解这个问题

适用范围

一个足球预测应用程序,用户可以对即将到来的比赛的比分进行预测。根据他们的预测是否正确,他们将被分配一些分数。每个用户可以创建一个团队,然后该团队将成为联盟的一部分。

<<p> 当前模型/strong>
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模型中,i将具有属性

result_id, prediction_id, allocated_points

所以在这里我可以比较预测结果和分配点…

任何建议都很感谢,我真的被这个难住了

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

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

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

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

最新更新