Validasi Rails pada kehadiran dua atau lebih entitas

Saya punya dua kolom berdasarkan nama,

jumlah_produk_tersedia (bilangan bulat) dan produk_tersedia_pada (tanggal).

Saya perlu melakukan validasi tingkat model pada kolom ini.

Validasi harus memeriksa bahwa jika product_required benar, maka salah satu kolom harus diisi.

Saat Manajer Produk mengisi katalog, kita perlu melakukan validasi tingkat model yang memeriksa apakah dia harus mengisi salah satu bidang tersebut.

Sarankan saya cara elegan apa pun untuk menulis validasi khusus untuk kebutuhan saya.

Saya sudah mencoba pendekatan ini

validates :product_available_count_or_product_available_on if product_required?

def product_available_count_or_product_available_on
  //logic ???
end

Apakah validasi khusus merupakan satu-satunya cara untuk memenuhi kebutuhan saya. Bisakah saya menggunakan Proc atau pendekatan lain untuk menulis kode yang lebih baik.


person 123    schedule 21.02.2014    source sumber


Jawaban (1)


Saya pikir validasi khusus adalah pendekatan terbaik untuk masalah seperti ini

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      

tetapi jika Anda benar-benar tidak ingin menulis validasi khusus, cobalah ini

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
Sedang mencari solusi kedua. - person 123; 24.02.2014