Как пройти в соответствии с условиями в валидах
-
21-12-2019 - |
Вопрос
Как я могу написать проверку для штрих-кода, чтобы быть уникальным для всех пользователей, где is_deleted
является ложной и такой же цепью?
validates :barcode, uniqueness: { conditions: -> { |record| where(is_deleted: false, chain_id: record.chain_id) } }, if: proc { |u| u.barcode.present? }
.
Что здесь не так?
спасибо.
UPD.Там могут быть два пользователей с тем же штрих-кодом с той же Chain_ID, если один из них или оба имеют :is_deleted => true
Решение
validates :barcode, uniqueness: { scope: :chain_id, conditions: ->{ where(is_deleted: false) } }, if: proc { |u| u.barcode.present? && u.active? }
.
Я придумал решение. Спасибо и извините, поздно здесь и голова не работает должным образом :)
Другие советы
Валидация Rails Rails У
if
и параметров GeneracodicodCode, которые позволяют добавлять условия, вы использовали его для правильной проверки наличия штрихкода, но вы можете продлить его для unless
.
Что касается цепочка, я понимаю, что вы заинтересованы в наличии.
в вашем случае, что будет
validates :barcode, uniqueness: { scope: [:chain_id] }, if: proc { |u| u.barcode.present? && w.is_deleted.false? }
. Не связан с StackOverflow