我将Post模型覆盖为已创建的发现标签并添加其ID。
def tags_attributes=(attributes)
new_attributes = attributes.values.map do |tags_attributes|
tag = Tag.find_by(name: tags_attributes[:url])
tags_attributes.merge!(id: tag.id) if tag.try(:id)
tags_attributes
end
super(new_attributes)
end
但获得ActiveRecord::RecordNotFound
(Couldn't find Tag with ID=6 for Post with ID=1):
this guide上有一段
如果哈希包含与已经关联的记录匹配的id密钥,则将修改匹配的记录。但是,如果父模型也正在更新,则上述适用。例如,如果您要创建一个名为joe的成员并想同时更新帖子,则会出现ActiveRecord :: RecordNotFound错误。
但是此ActiveRecord::RecordNotFound
会在创建,读取,更新时抛出。