唯一性验证轨道4

时间:2017-01-13 15:57:03

标签: ruby-on-rails ruby-on-rails-4

我的模型中有这种唯一性验证:

validates_uniqueness_of :source_id,
                          scope: [:year_id],
                          conditions: -> { where(comment_type_id: CommentType.final.id) },
                          message: %(
                            There can be only one final comment per year
                          )

我有2种类型的评论,' CommentType.internal'这可以多次添加到评论表中,并且“CommentType.final”#39;可以保存一次,但通过更新操作可以修改。

我能够使用最终的comment_type_id保存一条记录,但是当我想要创建另一条记录时,无论我有哪个commentary_type_id,它仍然无法通过此唯一性验证。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

这对我有用,我会回答任何面临同样问题的人:

validates_uniqueness_of :comment_type_id,
                          scope: [:year_id, :source_id],
                          if: ->(cmt) { cmt.comment_type_id == CommentType.final.id) },
                          message: %(
                            There can be only one final comment per year
                          )