我几乎可以肯定这已经回答了,但是我找不到它!
要求
我有两个班,tournaments
和teams
。
每个tournament
对象has_many
teams
大多数tournaments
的{{1}}都非常相似,所以...
我想用从静态列表中提取的默认集teams
初始化每个新的tournament
。
默认列表可能会更改,但这只会影响新的teams
。
我无法提出一个看起来最佳的设计:
解决方案1
tournaments
类,该类带有默认的default_teams
列表。teams
;遍历tournament
复制属性以创建新的default_teams
这似乎很容易做到,但是维护两个基本相同的模型似乎并不那么干。
解决方案2
teams
标记为默认值,并关联了默认值tournament
。teams
克隆此tournament
及其关联。这似乎有更多出错的余地。我需要从视图中排除此默认tournament
并以与同一模型中其他tournament
不同的方式管理其权限。一个模型本质上有两个工作,而且看起来也不是很正确。
问题
是否有更好的方法?我觉得这不是一个罕见的情况,但是我找不到其他人在讨论最佳做法。
答案 0 :(得分:1)
我希望我的问题正确。什么是静态球队名单?仅仅是纯文本还是它们存在于数据库中?
沿着这些思路怎么样
before_create :assign_default_teams
def assign_default_teams
self.teams = [team_id1, team_id2, ...]
end
由于您提到了初始化对象,因此也可以使用after_initialize
代替before_create
。确保为您的用例选择正确的callback。