كيفية تمرير بروك إلى الشروط في التحقق من الصحة

StackOverflow https://stackoverflow.com//questions/25047062

  •  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? }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top