如何创建一个新模型,其中包含对已存在的关联(多对多,使用has_many :through
)的引用?
以下是形成多对多关系的模型的相关部分:
class DietaryTagging < ApplicationRecord
belongs_to :dietary_tag
belongs_to :dietary_taggable, polymorphic: true
end
class DietaryTag < ApplicationRecord
has_many :dietary_taggings
has_many :users,
source: :dietary_taggable,
source_type: "User",
through: :dietary_taggings
end
class User < ApplicationRecord
has_many :dietary_taggings, as: :dietary_taggable
has_many :dietary_tags, through: :dietary_taggings
accepts_nested_attributes_for :dietary_tags
end
如果现有DietaryTag
的ID为1,则在尝试使用以下内容创建新的User
时,我会收到一条错误消息{:dietary_taggings=>["is invalid"]}
。
User.create(email: "someone@somewhere.com", dietary_tag_ids: [1])
我可以直接使用现有用户和饮食标签创建连接模型:DietaryTagging.create(dietary_taggable: User.last, dietary_tag_id: 1)
。所以,我很确定问题是我使用accepts_nested_attributes_for
的方式,还是我对如何/何时应该创建连接实例的期望。