القضبان 3: التحقق من صحة القيم المشتركة
سؤال
في Rails 2.x ، يمكنك استخدام عمليات التحقق للتأكد من أن لديك قيمة مشتركة فريدة مثل هذه:
validates_uniqueness_of :husband, :scope => :wife
في الترحيل المقابل ، يمكن أن يبدو هكذا:
add_index :family, [:husband, :wife], :unique => true
هذا من شأنه أن يتأكد من أن مجموعة الزوج/الزوجة فريدة من نوعها في قاعدة البيانات. الآن ، في Rails 3 تم تغيير بناء جملة التحقق من الصحة ويبدو أن سمة النطاق قد اختفت. يبدو الآن مثل:
validates :husband, :presence => true
أي فكرة كيف يمكنني تحقيق التحقق المشترك في القضبان 3؟ لا تزال عمليات التحقق من صحة Rails 2.x تعمل في Rails 3 ، لذا لا يزال بإمكاني استخدام المثال الأول ولكن يبدو "قديمًا" ، هل هناك طرق أفضل؟
المحلول
تحمل معي. الطريقة التي تؤدي التحقق من صحة طريقة ActiveModel هي البحث عن مدقق.
:presence => true
يبحث عن PresenceValidator
ويمرر الخيارات: true
إلى مُهيئ المدقق.
أعتقد أنك تريد
validates :husband, :presence => true, :uniqueness => {:scope => :wife}
(يعد مدقق التفرد جزءًا من ActivereCord ، وليس ActivEmodel. من المثير للاهتمام حقًا كيف يقوم المطورون بإعداد هذا. إنه أنيق تمامًا.)