التحقق من صحة القضبان على عناصر متعددة
-
22-09-2019 - |
سؤال
لقد كنت أستخدم accounts_nested_attributes_for لعدد قليل من النماذج المختلفة ولدي وضع غريب.
يمكنني تخطي الفراغات إنشاء من خلال النموذج العلوي ، ويمكنني التحقق من صحة السجلات الفردية من خلال القاع ، ولكن هل من الممكن إجراء التحقق الأكثر تعقيدًا على مجموعة من السجلات؟
لدي غرف وأسعار النماذج. الغرف has_many الأسعار و archings_nested_attributes_for أسعار.
أستطيع أن أتخلص من الفراغات
accepts_nested_attributes_for :room_rates, :reject_if => lambda { |a| a[:price].blank? }
ولكن لكل غرفة هناك 7 سجلات مختلفة (أسعار) .. دائمًا 7 وتقديمها مرة واحدة من نفس النموذج. حاليًا إذا دخلوا يومًا واحدًا فقط ، فسيسمح ذلك بذلك. ومع ذلك أود التحقق من صحة أن جميع السبعة يجب أن تكون موجودة. إما أنهم يدخلون جميعهم 7 ويقبلونه أو يمنحهم خطأً لإدخال 1 أو 2. فقط ولا يفعلون شيئًا على الإطلاق إذا تركوا كل السبعة فارغين تمامًا.
لم أر شيئًا كهذا حتى الآن لـ nested_attirbutes ، لذا فأنا أتساءل عما إذا كان ذلك ممكنًا.
المحلول
لست متأكدًا من أن هذا سيعمل ، لكن لا يمكنك التحقق من حجم المعدلات في فئة غرفتك ، شيء مثل:
class Room < ActiveRecord::Base
validate :all_rates_present
...
private
def all_rates_present
unless rates.size == 7
errors.add(:rates, "must all be filled in.")
end
end