有很多通过不坚持

Has many through doesn't persist

我对 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 给了我一个零 skill_id.

的精通

这是否意味着我必须每次都执行?还是我错过了什么?

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