【发布时间】:2013-06-11 11:50:57
【问题描述】:
Rails 新手,并尝试找出最“有条理”的方式来实现以下内容。
如下:
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 attributecaptain'`
不过,我可以这样设置:
t.team_memberships[4][:captain] = true
但这感觉不对。
鉴于您应该看到我想要实现的目标,是这样的:
A) 完成这项任务的最佳方法 - 如果是这样,有没有办法直接通过玩家获取并设置队长属性(如果有意义的话)
或
B) 有没有更好、更“有条理”的方法我错过了。
【问题讨论】:
标签: ruby-on-rails activerecord has-many-through