我的模型中有这种唯一性验证:
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,它仍然无法通过此唯一性验证。
我做错了什么?
答案 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
)