我的模型中有这样的唯一性验证:
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
)我有两种评论类型,'CommentType.internal‘和'CommentType.final’,前者可以多次添加到评论表中,后者可以保存一次,但可以通过更新操作进行修改。
我可以用最终的comment_type_id保存一条记录,但是当我想创建另一条记录时,不管我使用的是哪个commentary_type_id,它仍然无法通过唯一性验证。
我做错了什么?
发布于 2017-01-14 02:09:15
这对我来说很有效,我会为任何其他面临同样问题的人回答:
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
)https://stackoverflow.com/questions/41638609
复制相似问题