Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 你与干预模式有过很多关系吗_Ruby On Rails_Activerecord_Has Many Through - Fatal编程技术网

Ruby on rails 你与干预模式有过很多关系吗

Ruby on rails 你与干预模式有过很多关系吗,ruby-on-rails,activerecord,has-many-through,Ruby On Rails,Activerecord,Has Many Through,刚接触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_m

刚接触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
在我的团队成员模型中,我有一个额外的列
位置:整数
队长:布尔
wicket_keeper:布尔
(你能告诉我正在做什么吗…:)

鉴于以下情况:

t = Team.first
p = Player.first(11)
t.players << p
由于-
ActiveModel::MissingAttributeError:无法写入未知属性而失败
captain'`

但是,我可以这样设置:

t.team_memberships[4][:captain] = true
但这感觉不对

鉴于你应该看到我正在努力实现的目标,这是:

A) 完成此任务的最佳方法-如果是,是否有方法直接通过玩家获得并设置队长属性(如果有意义的话)


B) 有没有一种更好的、更“粗暴”的方法,我不知道。

我相信你所拥有的
t团队成员身份[4][:captain]=true
是正确的。我这样说是因为您在问题中指出,您的团队成员模型具有
位置:integer
队长:boolean
wicket\u keeper:boolean
。据我所知,您已经填充了TeamMembership模型。但是,使用以下命令:
t.players[4][:captain]=true
您正在尝试访问captain属性。这是TeamMembership模型的一部分,所以我想说的是,您试图访问属性captain,它是实例TeamMembership的一个属性。除此之外,我相信这个错误来自于玩家类中的
有很多:团队成员身份,这是指相关的模型。我想这是在团队成员表中寻找球员id。请参阅以下链接,它们可能有助于澄清您正在尝试做什么:


看一看第4.1.2.6节:外键

谢谢你的回答-但是,我知道为什么通过
团队成员身份
建立的联系正在发挥作用-我希望有更好的方式来定义团队成员关系…将阅读链接,尽管我已经浏览过几次了!!
t.team_memberships[4][:captain] = true