Ruby on Rails 5.2 - ActiveModel::Validations::HelperMethods

मॉड्यूल ActiveModel :: मान्यता :: HelperMethods




ruby

मॉड्यूल ActiveModel :: मान्यता :: HelperMethods

सार्वजनिक प्रवृत्ति के तरीके

validates_absence_of (* attr_names) स्रोत दिखाएं
# File activemodel/lib/active_model/validations/absence.rb, line 28
def validates_absence_of(*attr_names)
  validates_with AbsenceValidator, _merge_attributes(attr_names)
end

पुष्टि करता है कि निर्दिष्ट विशेषताएँ रिक्त हैं (जैसा कि Object#blank? द्वारा परिभाषित किया गया है Object#blank? )। सहेजने पर डिफ़ॉल्ट रूप से होता है।

class Person < ActiveRecord::Base
  validates_absence_of :first_name
end

पहला_नाम विशेषता ऑब्जेक्ट में होना चाहिए और यह रिक्त होना चाहिए।

कॉन्फ़िगरेशन विकल्प:

  • :message - एक कस्टम त्रुटि संदेश (डिफ़ॉल्ट है: "रिक्त होना चाहिए")।

हर सत्यापनकर्ता द्वारा समर्थित डिफ़ॉल्ट विकल्पों की एक सूची भी है :if :unless , :on :allow_nil , :allow_blank , और :strictActiveModel::Validations#validates देखें ActiveModel::Validations#validates अधिक जानकारी के लिए ActiveModel::Validations#validates

validates_acceptance_of (* attr_names) स्रोत दिखाएं
# File activemodel/lib/active_model/validations/acceptance.rb, line 101
def validates_acceptance_of(*attr_names)
  validates_with AcceptanceValidator, _merge_attributes(attr_names)
end

सेवा की जांच बॉक्स (या समान समझौते) की शर्तों को स्वीकार करने के लिए इच्छुक के पैटर्न को एन्क्रिप्ट करता है।

class Person < ActiveRecord::Base
  validates_acceptance_of :terms_of_service
  validates_acceptance_of :eula, message: 'must be abided'
end

यदि डेटाबेस कॉलम मौजूद नहीं है, तो terms_of_service विशेषता पूरी तरह से आभासी है। यह चेक केवल तभी किया जाता है जब terms_of_service नहीं है और डिफ़ॉल्ट रूप से सेव पर है।

कॉन्फ़िगरेशन विकल्प:

  • :message - एक कस्टम त्रुटि संदेश (डिफ़ॉल्ट है: "स्वीकार किया जाना चाहिए")।

  • :accept - एक मान निर्दिष्ट करता है जिसे स्वीकार किया जाता है। इसके अलावा संभावित मूल्यों की एक सरणी को स्वीकार करता है। डिफ़ॉल्ट मान एक सरणी ["1", सत्य] है, जो HTML चेकबॉक्स से संबंधित करना आसान बनाता है। यदि आप एक डेटाबेस कॉलम को मान्य कर रहे हैं, तो इसे सेट या शामिल करना चाहिए, यह true , क्योंकि सत्यापन से पहले यह विशेषता "1" से टाइपकास्ट है।

हर सत्यापनकर्ता द्वारा समर्थित डिफ़ॉल्ट विकल्पों की एक सूची भी है :if :unless , :on :allow_nil , :allow_blank , और :strictActiveModel::Validations#validates देखें ActiveModel::Validations#validates अधिक जानकारी के लिए ActiveModel::Validations#validates

validates_confirmation_of (* attr_names) स्रोत दिखाएं
# File activemodel/lib/active_model/validations/confirmation.rb, line 75
def validates_confirmation_of(*attr_names)
  validates_with ConfirmationValidator, _merge_attributes(attr_names)
end

एक पुष्टिकरण के साथ एक पासवर्ड या ईमेल एड्रेस फ़ील्ड को मान्य करने के लिए वांछित पैटर्न को एन्क्रिप्ट करता है।

Model:
  class Person < ActiveRecord::Base
    validates_confirmation_of :user_name, :password
    validates_confirmation_of :email_address,
                              message: 'should match confirmation'
  end

View:
  <%= password_field "person", "password" %>
  <%= password_field "person", "password_confirmation" %>

जोड़ा गया password_confirmation विशेषता आभासी है; यह पासवर्ड को मान्य करने के लिए केवल इन-मेमोरी विशेषता के रूप में मौजूद है। इसे प्राप्त करने के लिए, सत्यापन पुष्टिकरण विशेषता के लिए मॉडल में एक्सेसर्स जोड़ता है।

नोट: यह जाँच केवल तभी की जाती है जब nil न हो। पुष्टि की आवश्यकता के लिए, पुष्टिकरण विशेषता के लिए उपस्थिति जाँच जोड़ना सुनिश्चित करें:

validates_presence_of :password_confirmation, if: :password_changed?

कॉन्फ़िगरेशन विकल्प:

  • :message - एक कस्टम त्रुटि संदेश (डिफ़ॉल्ट है: " %{translated_attribute_name} " से मेल नहीं खाता)।

  • :case_sensitive - एक सटीक मिलान के लिए दिखता है। गैर-टेक्स्ट कॉलम द्वारा अनदेखा (डिफ़ॉल्ट रूप से true )।

हर सत्यापनकर्ता द्वारा समर्थित डिफ़ॉल्ट विकल्पों की एक सूची भी है :if :unless , :on :allow_nil , :allow_blank , और :strictActiveModel::Validations#validates देखें ActiveModel::Validations#validates अधिक जानकारी के लिए ActiveModel::Validations#validates

validates_exclusion_of (* attr_names) स्रोत दिखाएं
# File activemodel/lib/active_model/validations/exclusion.rb, line 44
def validates_exclusion_of(*attr_names)
  validates_with ExclusionValidator, _merge_attributes(attr_names)
end

पुष्टि करता है कि निर्दिष्ट विशेषता का मूल्य किसी विशेष गणना योग्य वस्तु में नहीं है।

class Person < ActiveRecord::Base
  validates_exclusion_of :username, in: %w( admin superuser ), message: "You don't belong here"
  validates_exclusion_of :age, in: 30..60, message: 'This site is only for under 30 and over 60'
  validates_exclusion_of :format, in: %w( mov avi ), message: "extension %{value} is not allowed"
  validates_exclusion_of :password, in: ->(person) { [person.username, person.first_name] },
                         message: 'should not be the same as your username or first name'
  validates_exclusion_of :karma, in: :reserved_karmas
end

कॉन्फ़िगरेशन विकल्प:

  • :in - उन वस्तुओं का एक उल्लेखनीय वस्तु जो मूल्य का हिस्सा नहीं होना चाहिए। यह एक प्रोक, लैम्ब्डा या प्रतीक के रूप में आपूर्ति की जा सकती है, जो एक एनुमरेबल रिटर्न देता है यदि गणना करने योग्य एक संख्यात्मक, समय या डेटाइम रेंज है तो परीक्षण Range#cover? साथ किया जाता है Range#cover? , अन्यथा के साथ include? । प्रोक्योरमेंट या लैम्ब्डा का उपयोग करते समय सत्यापन के तहत उदाहरण को एक तर्क के रूप में पारित किया जाता है।

  • :within - के लिए एक पर्यायवाची (या उपनाम) :in Range#cover? , अन्यथा के साथ include?

  • :message - एक कस्टम त्रुटि संदेश निर्दिष्ट करता है (डिफ़ॉल्ट है: "आरक्षित है")।

हर सत्यापनकर्ता द्वारा समर्थित डिफ़ॉल्ट विकल्पों की एक सूची भी है :if :unless , :on :allow_nil , :allow_blank , और :strictActiveModel::Validations#validates देखें ActiveModel::Validations#validates अधिक जानकारी के लिए ActiveModel::Validations#validates

validates_format_of (* attr_names) स्रोत दिखाएँ
# File activemodel/lib/active_model/validations/format.rb, line 109
def validates_format_of(*attr_names)
  validates_with FormatValidator, _merge_attributes(attr_names)
end

यह पुष्टि करता है कि निर्दिष्ट विशेषता का मूल्य सही रूप का है, जो प्रदान की गई नियमित अभिव्यक्ति द्वारा जा रहा है। आप आवश्यकता कर सकते हैं कि विशेषता नियमित अभिव्यक्ति से मेल खाती है:

class Person < ActiveRecord::Base
  validates_format_of :email, with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i, on: :create
end

वैकल्पिक रूप से, आप यह निर्दिष्ट कर सकते हैं कि निर्दिष्ट विशेषता नियमित अभिव्यक्ति से मेल नहीं खाती:

class Person < ActiveRecord::Base
  validates_format_of :email, without: /NOSPAM/
end

आप एक प्रॉम्प्ट या लैम्ब्डा भी प्रदान कर सकते हैं जो उस विशेषता को नियमित करने के लिए उपयोग की जाने वाली नियमित अभिव्यक्ति निर्धारित करेगा।

class Person < ActiveRecord::Base
  # Admin can have number as a first letter in their screen name
  validates_format_of :screen_name,
                      with: ->(person) { person.admin? ? /\A[a-z0-9][a-z0-9_\-]*\z/i : /\A[a-z][a-z0-9_\-]*\z/i }
end

नोट: स्ट्रिंग की शुरुआत और अंत से मेल खाने के लिए \A और \z का उपयोग करें, ^ और $ एक लाइन के प्रारंभ / अंत से मेल खाते हैं।

^ और $ लगातार दुरुपयोग के कारण, आपको multiline: true पास करने की आवश्यकता है multiline: true यदि आप नियमित रूप से प्रदान की गई अभिव्यक्ति में इन दो एंकरों में से किसी का उपयोग करते हैं तो multiline: true विकल्प। ज्यादातर मामलों में, आपको \A और \z का उपयोग करना चाहिए।

आपको या तो पास करना होगा :with विकल्प के रूप में। इसके अलावा, दोनों को एक नियमित अभिव्यक्ति या एक खरीद या लंबोदर होना चाहिए, अन्यथा एक अपवाद उठाया जाएगा।

कॉन्फ़िगरेशन विकल्प:

  • :message - एक कस्टम त्रुटि संदेश (डिफ़ॉल्ट है: "अमान्य है")।

  • :with - नियमित अभिव्यक्ति कि अगर गुण मिलान एक सफल सत्यापन में परिणाम देगा। यह एक खरीद या लंबोदर नियमित अभिव्यक्ति के रूप में प्रदान किया जा सकता है जिसे रनटाइम कहा जाएगा।

  • :without - नियमित अभिव्यक्ति कि अगर विशेषता मेल नहीं खाती है तो एक सफल सत्यापन होगा। यह एक खरीद या लंबोदर नियमित अभिव्यक्ति के रूप में प्रदान किया जा सकता है जिसे रनटाइम कहा जाएगा।

  • :multiline - सही पर सेट करें यदि आपकी नियमित अभिव्यक्ति में एंकर हैं जो स्ट्रिंग की शुरुआत या अंत के विपरीत लाइनों की शुरुआत या अंत से मेल खाते हैं। ये एंकर ^ और $

हर सत्यापनकर्ता द्वारा समर्थित डिफ़ॉल्ट विकल्पों की एक सूची भी है :if :unless , :on :allow_nil , :allow_blank , और :strictActiveModel::Validations#validates देखें ActiveModel::Validations#validates अधिक जानकारी के लिए ActiveModel::Validations#validates

validates_inclusion_of (* attr_names) स्रोत दिखाएं
# File activemodel/lib/active_model/validations/inclusion.rb, line 42
def validates_inclusion_of(*attr_names)
  validates_with InclusionValidator, _merge_attributes(attr_names)
end

पुष्टि करता है कि क्या निर्दिष्ट विशेषता का मूल्य किसी विशेष गणना योग्य वस्तु में उपलब्ध है।

class Person < ActiveRecord::Base
  validates_inclusion_of :gender, in: %w( m f )
  validates_inclusion_of :age, in: 0..99
  validates_inclusion_of :format, in: %w( jpg gif png ), message: "extension %{value} is not included in the list"
  validates_inclusion_of :states, in: ->(person) { STATES[person.country] }
  validates_inclusion_of :karma, in: :available_karmas
end

कॉन्फ़िगरेशन विकल्प:

  • :in - उपलब्ध वस्तुओं का एक गूढ़ वस्तु। यह एक प्रोक, लैम्ब्डा या प्रतीक के रूप में आपूर्ति की जा सकती है, जो एक एनुमरेबल रिटर्न देता है यदि गणना करने योग्य एक संख्यात्मक, समय या डेटाइम रेंज है तो परीक्षण Range#cover? साथ किया जाता है Range#cover? , अन्यथा के साथ include? । प्रोक्योरमेंट या लैम्ब्डा का उपयोग करते समय सत्यापन के तहत उदाहरण को एक तर्क के रूप में पारित किया जाता है।

  • :within - के लिए एक पर्यायवाची (या उपनाम)

  • :message - एक कस्टम त्रुटि संदेश निर्दिष्ट करता है (डिफ़ॉल्ट है: "सूची में शामिल नहीं है")।

हर सत्यापनकर्ता द्वारा समर्थित डिफ़ॉल्ट विकल्पों की एक सूची भी है :if :unless , :on :allow_nil , :allow_blank , और :strictActiveModel::Validations#validates देखें ActiveModel::Validations#validates अधिक जानकारी के लिए ActiveModel::Validations#validates

validates_length_of (* attr_names) स्रोत दिखाएँ
# File activemodel/lib/active_model/validations/length.rb, line 122
def validates_length_of(*attr_names)
  validates_with LengthValidator, _merge_attributes(attr_names)
end

पुष्टि करता है कि निर्दिष्ट विशेषताएँ आपूर्ति की गई प्रतिबंध प्रतिबंधों से मेल खाती हैं। केवल एक बाधा विकल्प का उपयोग एक समय के अलावा किया जा सकता है :minimum और :maximum जिसे एक साथ जोड़ा जा सकता है:

class Person < ActiveRecord::Base
  validates_length_of :first_name, maximum: 30
  validates_length_of :last_name, maximum: 30, message: "less than 30 if you don't mind"
  validates_length_of :fax, in: 7..32, allow_nil: true
  validates_length_of :phone, in: 7..32, allow_blank: true
  validates_length_of :user_name, within: 6..20, too_long: 'pick a shorter name', too_short: 'pick a longer name'
  validates_length_of :zip_code, minimum: 5, too_short: 'please enter at least 5 characters'
  validates_length_of :smurf_leader, is: 4, message: "papa is spelled with 4 characters... don't play me."
  validates_length_of :words_in_essay, minimum: 100, too_short: 'Your essay must be at least 100 words.'

  private

  def words_in_essay
    essay.scan(/\w+/)
  end
end

बाधा विकल्प:

  • :minimum - विशेषता का न्यूनतम आकार।

  • :maximum - विशेषता का अधिकतम आकार। यदि :minimum साथ उपयोग नहीं किया जाता है तो डिफ़ॉल्ट रूप से nil अनुमति देता है।

  • :is - विशेषता का सटीक आकार।

  • :within - विशेषता के न्यूनतम और अधिकतम आकार को निर्दिष्ट करने वाली सीमा।

  • :in एक पर्यायवाची (या उपनाम)।

अन्य विकल्प:

  • :allow_nil - विशेषता nil हो सकती है; सत्यापन को छोड़ दें।

  • :allow_blank - विशेषता रिक्त हो सकती है; सत्यापन को छोड़ दें।

  • :too_long - त्रुटि संदेश यदि विशेषता से अधिक हो जाता है (डिफ़ॉल्ट है: "बहुत लंबा है (अधिकतम% {गिनती} वर्ण)")।

  • :too_short - यदि गुण न्यूनतम के अंतर्गत जाता है तो त्रुटि संदेश (डिफ़ॉल्ट है: "बहुत छोटा है (न्यूनतम% {गिनती} वर्ण)")।

  • :wrong_length - अगर :is और विधि का उपयोग करते समय त्रुटि संदेश गलत आकार है (डिफ़ॉल्ट है: "गलत लंबाई है (% {गिनती} वर्ण) होनी चाहिए")।

  • :message - त्रुटि संदेश के लिए उपयोग करने के लिए एक :minimum :maximum , या :is उल्लंघन है। उपयुक्त too_long / too_short / wrong_length संदेश का एक अन्य नाम।

हर सत्यापनकर्ता द्वारा समर्थित डिफ़ॉल्ट विकल्पों की एक सूची भी है :if :unless , :on :strict और :strictActiveModel::Validations#validates देखें ActiveModel::Validations#validates अधिक जानकारी के लिए ActiveModel::Validations#validates

इसके रूप में भी उपनाम: validates_size_of
validates_numericality_of (* attr_names) स्रोत दिखाएं
# File activemodel/lib/active_model/validations/numericality.rb, line 175
def validates_numericality_of(*attr_names)
  validates_with NumericalityValidator, _merge_attributes(attr_names)
end

यह पुष्टि करता है कि निर्दिष्ट विशेषता का मान Kernel साथ एक फ्लोट में बदलने की कोशिश करके संख्यात्मक है (। केवल only_integer false ) या इसे नियमित अभिव्यक्ति /\A[+\-]?\d+\z/ (? यदि only_integer सही पर सेट true )।

class Person < ActiveRecord::Base
  validates_numericality_of :value, on: :create
end

कॉन्फ़िगरेशन विकल्प:

  • :message - एक कस्टम त्रुटि संदेश (डिफ़ॉल्ट है: "एक नंबर नहीं है")।

  • :only_integer - निर्दिष्ट करता है कि मान पूर्णांक होना है, उदाहरण के लिए एक अभिन्न मान (डिफ़ॉल्ट false )।

  • :allow_nil - सत्यापन छोड़ें यदि विशेषता nil (डिफ़ॉल्ट false )। ध्यान दें कि Integer और फ्लोट कॉलम के लिए खाली तार nil परिवर्तित हो जाते हैं।

  • :greater_than अधिक से :greater_than मूल्य - निर्दिष्ट करता है कि आपूर्ति की गई मूल्य से अधिक होना चाहिए।

  • :greater_than_or_equal_to अधिक से :greater_than_or_equal_to - निर्दिष्ट करता है कि मूल्य प्रदत्त मूल्य से अधिक या बराबर होना चाहिए।

  • :equal_to - निर्दिष्ट करता है कि मूल्य आपूर्ति किए गए मूल्य के बराबर होना चाहिए।

  • :less_than - निर्दिष्ट करता है कि मूल्य को दिए गए मूल्य से कम होना चाहिए।

  • :less_than_or_equal_to - निर्दिष्ट करता है कि मूल्य आपूर्ति किए गए मूल्य से कम या बराबर होना चाहिए।

  • :other_than - निर्दिष्ट करता है कि मूल्य आपूर्ति किए गए मूल्य के अलावा अन्य होना चाहिए।

  • :odd - निर्दिष्ट करता है कि मान एक विषम संख्या होना चाहिए।

  • :even - निर्दिष्ट करता है कि मान एक सम संख्या होना चाहिए।

हर सत्यापनकर्ता द्वारा समर्थित डिफ़ॉल्ट विकल्पों की एक सूची भी है :if :unless , :on :allow_nil , :allow_blank , और :strictActiveModel::Validations#validates देखें ActiveModel::Validations#validates अधिक जानकारी के लिए ActiveModel::Validations#validates

निम्नलिखित चेकों को भी एक खरीद या एक प्रतीक के साथ आपूर्ति की जा सकती है जो एक विधि से मेल खाती है:

  • :greater_than

  • :greater_than_or_equal_to

  • :equal_to

  • :less_than

  • :less_than_or_equal_to

  • :only_integer

उदाहरण के लिए:

class Person < ActiveRecord::Base
  validates_numericality_of :width, less_than: ->(person) { person.height }
  validates_numericality_of :width, greater_than: :minimum_weight
end
validates_presence_of (* attr_names) स्रोत दिखाएं
# File activemodel/lib/active_model/validations/presence.rb, line 34
def validates_presence_of(*attr_names)
  validates_with PresenceValidator, _merge_attributes(attr_names)
end

पुष्टि करता है कि निर्दिष्ट विशेषताएँ रिक्त नहीं हैं (जैसा कि Object#blank? द्वारा परिभाषित किया गया है Object#blank? )। सहेजने पर डिफ़ॉल्ट रूप से होता है।

class Person < ActiveRecord::Base
  validates_presence_of :first_name
end

पहला_नाम विशेषता ऑब्जेक्ट में होना चाहिए और यह रिक्त नहीं हो सकता।

यदि आप बूलियन फ़ील्ड की उपस्थिति को सत्यापित करना चाहते हैं (जहाँ वास्तविक मान true और false ), तो आप validates_inclusion_of :field_name, in: [true, false] का उपयोग करना चाहेंगे।

यह Object#blank? करने के तरीके के कारण है Object#blank? बूलियन मानों को संभालता है: false.blank? # => true false.blank? # => true

कॉन्फ़िगरेशन विकल्प:

  • :message - एक कस्टम त्रुटि संदेश (डिफ़ॉल्ट है: "रिक्त नहीं हो सकता")।

हर सत्यापनकर्ता द्वारा समर्थित डिफ़ॉल्ट विकल्पों की एक सूची भी है :if :unless , :on :allow_nil , :allow_blank , और :strictActiveModel::Validations#validates देखें ActiveModel::Validations#validates अधिक जानकारी के लिए ActiveModel::Validations#validates

validates_size_of (* attr_names)
इसके लिए उपनाम: validates_length_of