【发布时间】:2019-12-01 23:55:37
【问题描述】:
我的 Rails 应用程序中目前有两个模型:Team 和 Player,如下所示:
class Team < ApplicationRecord
has_many :players
end
class Player < ApplicationRecord
belongs_to :team
end
我想添加一个Matchup 类来代表两支球队互相比赛。在正常的 OOP 领域中,我可能会执行以下操作:
class Matchup
attr_accessor :first_team, :second_team
end
但我不能 100% 确定 Rails 惯用的设置方式是什么。我正在考虑的一些选项:
1) 使用关联:Matchup 有许多球队,Team 属于许多对战。这有点尴尬,因为现在我无法为first_team 和second_team 分别指定一个字段。
2) 坚持 OOP 方法。 Matchup 有两个字段:first_team 和 second_team,均指代 Team 对象。由于我主要计划允许用户查看比赛,因此我不需要在此处使用资源路由。
提前感谢您提供的任何帮助!
【问题讨论】:
-
我倾向于使用关联方法。它更灵活,因为您永远不知道比赛何时可能超过 2 支球队或循环赛等。如果您采用 OOP 方式,我建议团队可能是一个数组。
标签: ruby-on-rails ruby activerecord