Rails 的新手,并试图找出最“railsy”的方式来实现以下内容。
给出如下:
class Team
has_many :team_memberships
has_many :players, through: :team_memberships
end
class TeamMembership
acts_as_list scope: :team_id
belongs_to :team
belongs_to :player
end
class Player
has_many :team_memberships
has_many :teams, through: team_memberships
end
在我的 TeamMembership 模型中,我有一个额外的列position:integer
,captain:boolean
并且wicket_keeper:boolean
(你能告诉我我正在做什么...... :))
鉴于以下情况:
t = Team.first
p = Player.first(11)
t.players << p
这很好地用我的玩家对象填充了 TeamMembership 模型。
如果我尝试:
t.players[4][:captain] = true
它失败了-ActiveModel::MissingAttributeError: can't write unknown attribute
船长'`
但是,我可以这样设置:
t.team_memberships[4][:captain] = true
但这只是感觉不对。
鉴于您应该看到我想要实现的目标,是这样的:
A) 完成这项任务的最佳方式 - 如果是这样,有没有办法直接通过玩家获取并设置队长属性(如果有意义的话)
或者
B)我是否缺少更好,更“随意”的方法。