كيفية تمرير بروك إلى الشروط في التحقق من الصحة
-
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? }
ما هو الخطأ هنا؟
شكرًا.
تحديث.من الممكن أن يكون هناك مستخدمين لهما نفس الرمز الشريطي ونفس معرف السلسلة، إذا كان أحدهما أو كليهما يمتلك ذلك :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
أيضًا.فيما يتعلق بمعرف السلسلة، أفهم أنك مهتم بتحديد النطاق.
في حالتك سيكون ذلك
validates :barcode, uniqueness: { scope: [:chain_id] }, if: proc { |u| u.barcode.present? && w.is_deleted.false? }
لا تنتمي إلى StackOverflow