की मौजूदगी की पुष्टि करें मैं एक फ़ील्ड या किसी अन्य की उपस्थिति को कैसे मान्य करूं लेकिन कम से कम एक नहीं?एक फ़ील्ड या अन्य (एक्सओआर)
64
A
उत्तर
111
यदि आप ऐसा तरह numericality सत्यापन करने के लिए सशर्त जोड़ने आपका कोड काम करेगा:
class Transaction < ActiveRecord::Base
validates_presence_of :date
validates_presence_of :name
validates_numericality_of :charge, allow_nil: true
validates_numericality_of :payment, allow_nil: true
validate :charge_xor_payment
private
def charge_xor_payment
unless charge.blank?^payment.blank?
errors.add(:base, "Specify a charge or a payment, not both")
end
end
end
9
रेल 3.
class Transaction < ActiveRecord::Base
validates_presence_of :date
validates_presence_of :name
validates_numericality_of :charge, :unless => proc{|obj| obj.charge.blank?}
validates_numericality_of :payment, :unless => proc{|obj| obj.payment.blank?}
validate :charge_xor_payment
private
def charge_xor_payment
if !(charge.blank?^payment.blank?)
errors[:base] << "Specify a charge or a payment, not both"
end
end
end
2
validate :father_or_mother
#Father अंतिम नाम या माँ अंतिम नाम है के लिए उदाहरण अनिवार्य
def father_or_mother
if father_last_name == "Last Name" or father_last_name.blank?
errors.add(:father_last_name, "cant blank")
errors.add(:mother_last_name, "cant blank")
end
end
सरल उदाहरण से ऊपर आज़माएं।
7
class Transaction < ActiveRecord::Base
validates_presence_of :date
validates_presence_of :name
validates_numericality_of :charge, allow_nil: true
validates_numericality_of :payment, allow_nil: true
validate :charge_xor_payment
private
def charge_xor_payment
if [charge, payment].compact.count != 1
errors.add(:base, "Specify a charge or a payment, not both")
end
end
end
तुम भी 3 या उससे अधिक मूल्यों के साथ ऐसा कर सकते हैं:
if [month_day, week_day, hour].compact.count != 1
31
मुझे लगता है कि इस रेल में और अधिक मुहावरेदार है 3+:
जैसे: मान्य के लिए कि user_name
या email
में से एक मौजूद है:
validates :user_name, presence: true, unless: ->(user){user.email.present?}
validates :email, presence: true, unless: ->(user){user.user_name.present?}
+18
यह "दोनों नहीं" मानदंडों को संभाल नहीं करता है –
0
मैंने नीचे दिए गए इस प्रश्न का उत्तर दिया।
validate :some_was_present
belongs_to :seo_customable, polymorphic: true
def some_was_present
desc = description.blank?
errors.add(desc ? :description : :keywords, t('errors.messages.blank')) if desc && keywords.blank?
end
संबंधित मुद्दे
- 1. एक्सओआर
- 2. लिनक्स/एक्सओआर
- 3. जावा: क्या एक आसान, त्वरित तरीका है, या, या एक्सओआर एक साथ सेट करता है?
- 4. किसी अन्य फ़ील्ड के मूल्य
- 5. Django modelform अन्य फ़ील्ड विकल्प
- 6. बिटअरे और एक्सओआर
- 7. एक्सओआर उद्देश्य-सी
- 8. किसी अन्य फ़ील्ड के मान
- 9. एक्सओआर एन्क्रिप्शन क्या है?
- 10. व्यूस्टेट या छुपा फ़ील्ड
- 11. क्या XPath में कोई अनन्य या 'एक्सओआर' है?
- 12. एसक्यूएल सर्वर नल लॉजिकल एक्सओआर
- 13. क्या क्लास एक विधि या फ़ील्ड है?
- 14. जावास्क्रिप्ट - स्ट्रिंग पर बिटवाई एक्सओआर?
- 15. जावा में एक्सओआर न्यूरल नेटवर्क
- 16. अपाचे सौर स्ट्रिंग फ़ील्ड या टेक्स्ट फ़ील्ड?
- 17. जावास्क्रिप्ट: फ़ील्ड या गुण
- 18. किसी अन्य फ़ील्ड में लुकअप वैल्यू के आधार पर एक फ़ील्ड में मान कैसे वापस करें
- 19. दो छोटे पूर्णांकों का एक्सओआर
- 20. लिफ्टस्क्रीन फ़ील्ड या टेक्स्ट
- 21. डीटीओ। गुण या फ़ील्ड?
- 22. यूआरएल या सत्र या अन्य
- 23. MySQL: अन्य डेटाटाइम फ़ील्ड में डेटाटाइम डालें
- 24. MySQL किसी अन्य फ़ील्ड की तरह
- 25. रेल मॉडल या तो एक मॉडल या अन्य
- 26. जेआईआरए (या अन्य टूल्स)
- 27. गिट या अन्य वीसीएस
- 28. आर या अन्य सॉफ़्टवेयर
- 29. पायथन, पावरशेल, या अन्य?
- 30. क्या एक magento adminhtml फ़ील्ड अधिक फ़ील्ड या मान पर निर्भर करता है?
यह एकदम सही जवाब कहा जाता है: इस उदाहरण में
:description
और:keywords
क्षेत्रों जो इस में से एक खाली नहीं हो रहे हैं। धन्यवाद @Semanticart –कार्यक्षमता बहुत अच्छा काम करता है। लेकिन, मुझे फॉर्म पेज पर दिखाए गए त्रुटियां नहीं मिल सका। जब तक मैं अपने _form.slim पर '= @ invoice.errors [: base] [0]' जैसी कुछ नहीं करता। कोई सुझाव? –