有很多通过不坚持

时间:2016-04-27 12:27:40

标签: ruby-on-rails has-many-through

我对“有多少关系”有疑问。

我有3个模特:艺术家,技能和掌握

skill.rb

class Skill < ActiveRecord::Base
  has_many :masteries
  has_many :artists, through: :masteries
end

mastery.rb

class Mastery < ActiveRecord::Base
  belongs_to :artist
  belongs_to :skill
end

artist.rb

class Artist < ActiveRecord::Base
  has_many :masteries
  has_many :skills, through: :masteries
end

每次我尝试使用artist.skills << skill将技能附加到艺术家时,都会创建精通,但artist_id为零。反之亦然。 skill.artists << artist给了我一个没有技能的掌握。

这是否意味着我每次都要执行这两项操作?或者我错过了什么?

1 个答案:

答案 0 :(得分:0)

所以基本上,这就是它失败的原因:在某些不明确的情况下,你似乎无法在rails控制台中设置它。但是,如果您使用与我相同的模型设置,使用model.attributes << attribute语法将正常工作。显然,如果您需要在rails控制台中创建虚假关系,您只需创建一个新的Mastery,并相应地设置其creator_idskill_id,然后保存它。