سؤال

بالنظر إلى النموذج الذي يحتوي على التصديقات في model_name.ملفات rb, كيف يمكنني الوصول إلى تلك التصديقات يدويا ؟ أحب لطهي الطعام الخاصة بك التحقق من صحة النموذج النظام التي من شأنها أن تعمل جنبا إلى جنب مع المدمج في القضبان الحيل و أريد أن تبقي كل شيء جافة قدر الإمكان.مشكلتي الرئيسية هي أنني بحاجة إلى إجراء من جانب الخادم التصديقات قبل أي من شكل قيم ضرب قاعدة البيانات (أنا باستخدام شكل متعددة الخطوات).

أساسا أنا أتساءل عما إذا كان هناك طريقة مثل

User.validations.each do |v|
    puts v.constraint.to_s + " " + v.message
end

هل هناك أي شيء مشابه لهذا ؟

شكرا مقدما.

هل كانت مفيدة؟

المحلول

مشكلتي الرئيسية هي أنني بحاجة إلى جعل من جانب الخادم التصديقات قبل أي من شكل قيم ضرب قاعدة البيانات (أنا باستخدام شكل متعددة الخطوات).

إذا كان النموذج الخاص بك غير صالح وفقا التصديقات في فئتها الملف ، ثم البيانات لن تحصل على حفظ قاعدة البيانات (إلا إذا كنت تمر false إلى save طريقة لقمع التصديقات).

  • يمكنك أن تطلب نموذج إذا كان صحيحا في أي نقطة خلال الاحتجاج valid?/invalid? الأساليب.

نصائح أخرى

والكائن أكتيفيريكورد يعرض طريقة الأخطاء بعد صالح؟ ويسمى، والتي تعطيك رسائل حول التي تنتهك التصديقات. هل يمكن أن تحقق صالحة؟ ثم تحقق لمعرفة ما إذا كان أي من الحقول الموجودة في جزء من النموذج كنت على غير صالحة. هل يمكن أن تفعل شيئا من هذا القبيل لنموذج مع حقول field1 وfield2.

unless x.valid?
  [:field1,:field2].each do |field|
    yes_there_was_an_error if x.errors[field]
  end
end

وأفضل رهان هو استخدام آلة الدولة وتخزين البيانات في قاعدة البيانات بين مختلف الخطوات في النموذج.

ويمكنك القيام على سبيل المثال validates_presence_of :username, :if => proc {|u| u.signup_step >= 2 }، حيث signup_step هو عمود صحيح في قاعدة البيانات.

وهكذا، حتى ولو كنت تقول انك لا تريد تخزينها في قاعدة البيانات بين الأشكال، وأعتقد أنكم ينبغي. إذا قمت بذلك، يمكنك استخدام التصديقات والنماذج العادية، دون الخارقة سيئة. وبصراحة، أشك القيام به على هذا الطريق هي مشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top