문제

모든 사용자에 대해 고유한 바코드에 대한 유효성 검사를 어떻게 작성합니까? 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? }
.

나는 해결책을 생각해 냈습니다. 고마워요, 죄송합니다, 늦은 늦은 머리가 예상대로 작동하지 않습니다.)

다른 팁

레일 검증에는 if 그리고 unless 조건을 추가할 수 있는 매개변수를 사용하여 바코드 존재 여부를 제대로 확인했지만 is_deleted 또한.체인 ID와 관련하여 귀하가 범위 지정에 관심이 있다는 것을 이해합니다.

귀하의 경우에는

validates :barcode, uniqueness: { scope: [:chain_id] }, if: proc { |u| u.barcode.present? && w.is_deleted.false? }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top