有很多通过不坚持
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_id
和 skill_id
,然后保存。
我对 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_id
和 skill_id
,然后保存。