如何将proc传递给验证的条件
-
21-12-2019 - |
题
如何为所有用户编写条形码的验证是唯一的,因为生成的所有用户都是假的和相同的链?
validates :barcode, uniqueness: { conditions: -> { |record| where(is_deleted: false, chain_id: record.chain_id) } }, if: proc { |u| u.barcode.present? }
.
这里有什么问题?
谢谢。
upd。如果其中一个或两者都有相同的链条,则可以有两个具有相同条形码的用户,如果其中一个或两者都有is_deleted
解决方案
validates :barcode, uniqueness: { scope: :chain_id, conditions: ->{ where(is_deleted: false) } }, if: proc { |u| u.barcode.present? && u.active? }
.
我想出了一个解决方案。 谢谢,对不起,它迟到了,头部没有按预期工作:)
其他提示
Rails验证具有生成的icodeTagcode和if
参数,允许您添加条件,您使用它正确检查条形码状态,但也可以将其扩展为unless
。
至于链ID,我明白你对范围感兴趣。
在您的情况下是
validates :barcode, uniqueness: { scope: [:chain_id] }, if: proc { |u| u.barcode.present? && w.is_deleted.false? }
. 不隶属于 StackOverflow