wie man proc in Validierungen an Bedingungen übergibt
-
21-12-2019 - |
Frage
Wie kann ich eine Validierung dafür schreiben, dass der Barcode für alle Benutzer eindeutig ist? is_deleted
ist falsch und dieselbe Kette?
validates :barcode, uniqueness: { conditions: -> { |record| where(is_deleted: false, chain_id: record.chain_id) } }, if: proc { |u| u.barcode.present? }
was ist hier falsch?
Danke.
aktualisiert.Es kann zwei Benutzer mit demselben Barcode und derselben Chain_ID geben, sofern einer von ihnen oder beide über denselben Barcode verfügen :is_deleted => true
Lösung
Ich kam mit einer Lösung. Danke und sorry, es ist spät hier und der Kopf funktioniert nicht wie erwartet :)
Andere Tipps
Rails-Validierung haben if
Und unless
Parameter, mit denen Sie Bedingungen hinzufügen können, Sie haben es verwendet, um das Vorhandensein von Barcodes ordnungsgemäß zu überprüfen, aber Sie können es erweitern is_deleted
sowie.Was die Ketten-ID betrifft, so verstehe ich, dass Sie an einer Festlegung des Umfangs interessiert sind.
In Ihrem Fall wäre das der Fall
validates :barcode, uniqueness: { scope: [:chain_id] }, if: proc { |u| u.barcode.present? && w.is_deleted.false? }