การตรวจสอบ Rails เมื่อมีเอนทิตีสองรายการขึ้นไป

ฉันมีสองคอลัมน์ตามชื่อ

product_available_count (จำนวนเต็ม) และ product_available_on (วันที่)

ฉันจำเป็นต้องดำเนินการตรวจสอบระดับแบบจำลองในคอลัมน์เหล่านี้

การตรวจสอบความถูกต้องควรตรวจสอบว่าหาก product_required เป็นจริง ก็ควรเติมข้อมูลในช่อง อย่างใดอย่างหนึ่ง

เมื่อผู้จัดการผลิตภัณฑ์กรอกแค็ตตาล็อก เราจำเป็นต้องดำเนินการ การตรวจสอบระดับโมเดล เพื่อตรวจสอบว่าเขาควรกรอกข้อมูลลงในฟิลด์ใดฟิลด์หนึ่ง

แนะนำวิธีการเขียนการตรวจสอบความถูกต้องที่กำหนดเองตามความต้องการของฉันที่หรูหรา

ฉันได้ลองใช้วิธีนี้แล้ว

validates :product_available_count_or_product_available_on if product_required?

def product_available_count_or_product_available_on
  //logic ???
end

การตรวจสอบแบบกำหนดเองเป็นวิธีเดียวที่จะตอบสนองความต้องการของฉันหรือไม่ ฉันสามารถใช้ Proc หรือวิธีอื่นใดเพื่อเขียนโค้ดที่ดีขึ้นได้หรือไม่


person 123    schedule 21.02.2014    source แหล่งที่มา


คำตอบ (1)


ฉันคิดว่าการตรวจสอบแบบกำหนดเองเป็นแนวทางที่ดีที่สุดสำหรับปัญหาประเภทนี้

validate :product_available_count_or_product_available_on if product_required?

def product_available_count_or_product_available_on
  if [product_available_count, product_available_on].compact.blank.size == 0
    errors[:base] << ("Please select alteast one.")
  end
end      

แต่ถ้าคุณไม่ต้องการเขียนการตรวจสอบแบบกำหนดเองจริงๆ ให้ลองทำสิ่งนี้

validates :product_available_count, :presence => { :if =>  product_required? && product_available_on.blank? }
validates :product_available_on, :presence => { :if =>  product_required? && product_available_count.blank? }
person Anil Maurya    schedule 21.02.2014
comment
กำลังมองหาวิธีแก้ปัญหาที่สอง - person 123; 24.02.2014