更新嵌套属性失败,因为唯一性验证失败

时间:2011-06-18 00:28:41

标签: ruby-on-rails

以下是关联以及相关的依赖关系和验证

帖子模型: 发布has_many:post_tags 发布has_many:tags,:through => :post_tags

标签型号: 验证:content,:uniqueness =>真

问题是这样的: 当我想为帖子分配标签(即post.tags<< new_tag)时,如果数据库中已存在具有相同内容的标签,则操作将失败,因为唯一性验证失败。

期望的行为是:为帖子分配新标签时 - 如果标记已存在,则不要尝试创建新标记,而只是创建post_tag关系。这将避免唯一性验证失败,但仍将标记分配给帖子

  • 如果标记不存在,则创建新标记以及post_tag关系。

干净的方法是什么? 谢谢,

-p.s。我正在思考的两种方法是手工进行关联创建,即不使用嵌套属性功能。或者在UserPost模型中覆盖AvtiveRecords的'autosave_associated_records_for_tags'方法,该方法处理关联模型(在本例中为标签)的自动保存,并修改它以在尝试保存之前检查标签是否存在

1 个答案:

答案 0 :(得分:0)