我试图找出这里的最佳路径,之前的问题没有透露太多的问题,但这可能是由于我的解释,所以我要试着把它分解成更小的块,希望能在学习小块的同时,更多地了解这个问题
适用范围
一个足球预测应用程序,用户可以对即将到来的比赛的比分进行预测。根据他们的预测是否正确,他们将被分配一些分数。每个用户可以创建一个团队,然后该团队将成为联盟的一部分。
<<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