Rails 相对较新,我正在为几个朋友开发一个简单的 Rails 应用程序来限制 nfl 游戏。
我正在创建一个活动记录模型,该模型对体育比赛的信息进行建模,例如主队、访客、开始时间等,以及与该比赛的障碍相关的信息(最喜欢的、失败的、总的等)。
这感觉很尴尬,因为对于其中几个字段,我基本上存储了重复的信息(例如,一个团队始终要么是 home_team 要么是访客,并且始终要么是最喜欢的要么是失败者)
所以,我的模型看起来像这样:
create_table "games", :force => true do |t|
t.integer "week"
t.string "home_team"
t.string "visitor_team"
t.string "favorite"
t.decimal "line"
t.decimal "total"
t.string "kickoff"
t.string "status" #['open', 'completed']
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
为了使模型尽可能简洁,我只定义了必填字段(主队、访客和最喜欢的字段),然后我在我的游戏模型中编写了一些简单的方法来返回有关比赛的其他有用信息,例如,而不是列出每个在模型中组队两次(一次为失败者/最爱和主场/客场)
def underdog
teams = [self.home_team, self.visitor_team]
teams.each do |team|
return team if team != self.favorite
end
end
这行得通,但我在争论是否更有意义为游戏信息创建一个单独的模型(并使游戏模型本身保持最小)并仅使用 has_many => :through 或尝试其他方法,因为它们让我拥有我的模型设置似乎感觉不正确将重复信息存储在同一个表中。任何建议或赞赏。