Ruby on Rails 5.2 - ActiveModel::Validations

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




ruby

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

शामिल मॉड्यूल:
ActiveModel::Validations::HelperMethods

सक्रिय मॉडल मान्यताओं

आपकी वस्तुओं को पूर्ण सत्यापन ढांचा प्रदान करता है।

एक न्यूनतम कार्यान्वयन हो सकता है:

class Person
  include ActiveModel::Validations

  attr_accessor :first_name, :last_name

  validates_each :first_name, :last_name do |record, attr, value|
    record.errors.add attr, 'starts with z.' if value.to_s[0] == ?z
  end
end

आपको पूर्ण मानक सत्यापन स्टैक के साथ प्रदान करता है जिसे आप सक्रिय रिकॉर्ड से जानते हैं:

person = Person.new
person.valid?                   # => true
person.invalid?                 # => false

person.first_name = 'zoolander'
person.valid?                   # => false
person.invalid?                 # => true
person.errors.messages          # => {first_name:["starts with z."]}

ध्यान दें कि ActiveModel::Validations स्वचालित रूप से एक नए ActiveModel::Errors साथ आरंभ किए गए आपके उदाहरणों में एक errors विधि जोड़ता है, इसलिए आपको मैन्युअल रूप से ऐसा करने की कोई आवश्यकता नहीं है।

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

त्रुटियाँ () स्रोत दिखाएं
# File activemodel/lib/active_model/validations.rb, line 303
def errors
  @errors ||= Errors.new(self)
end

विशेषता त्रुटि संदेशों के बारे में सभी जानकारी रखने वाली Errors लौटाता है।

class Person
  include ActiveModel::Validations

  attr_accessor :name
  validates_presence_of :name
end

person = Person.new
person.valid? # => false
person.errors # => #<ActiveModel::Errors:0x007fe603816640 @messages={name:["can't be blank"]}>
अवैध? (संदर्भ = नील) स्रोत दिखाएँ
# File activemodel/lib/active_model/validations.rb, line 375
def invalid?(context = nil)
  !valid?(context)
end

valid? के विपरीत कार्य करता valid? । यदि त्रुटि जोड़ी गई थी, तो true , अन्यथा false है।

class Person
  include ActiveModel::Validations

  attr_accessor :name
  validates_presence_of :name
end

person = Person.new
person.name = ''
person.invalid? # => true
person.name = 'david'
person.invalid? # => false

प्रसंग को वैकल्पिक रूप से यह परिभाषित करने के लिए आपूर्ति की जा सकती है कि किस कॉलबैक को परीक्षण करने के लिए (संदर्भ का उपयोग कर मान्यताओं पर परिभाषित किया :on )।

class Person
  include ActiveModel::Validations

  attr_accessor :name
  validates_presence_of :name, on: :new
end

person = Person.new
person.invalid?       # => false
person.invalid?(:new) # => true
वैध? (संदर्भ = नील) स्रोत दिखाएँ
# File activemodel/lib/active_model/validations.rb, line 336
def valid?(context = nil)
  current_context, self.validation_context = validation_context, context
  errors.clear
  run_validations!
ensure
  self.validation_context = current_context
end

सभी निर्दिष्ट मान्यताओं को चलाता है और यदि कोई त्रुटि अन्यथा false थी, तो true

class Person
  include ActiveModel::Validations

  attr_accessor :name
  validates_presence_of :name
end

person = Person.new
person.name = ''
person.valid? # => false
person.name = 'david'
person.valid? # => true

प्रसंग को वैकल्पिक रूप से यह परिभाषित करने के लिए आपूर्ति की जा सकती है कि किस कॉलबैक को परीक्षण करने के लिए (संदर्भ का उपयोग कर मान्यताओं पर परिभाषित किया :on )।

class Person
  include ActiveModel::Validations

  attr_accessor :name
  validates_presence_of :name, on: :new
end

person = Person.new
person.valid?       # => true
person.valid?(:new) # => false
इसके अलावा उपनाम: validate
मान्य करें (संदर्भ = शून्य)
अन्य के लिए उपनाम: valid?
मान्य! (संदर्भ = नील) स्रोत दिखाएँ
# File activemodel/lib/active_model/validations.rb, line 384
def validate!(context = nil)
  valid?(context) || raise_validation_error
end

निर्दिष्ट संदर्भ के भीतर सभी मान्यताओं को चलाता है। यदि कोई त्रुटि नहीं मिलती है, तो true है, अन्यथा ValidationError उठाता है।

विकल्प के साथ Validations :on विकल्प :on कोई संदर्भ नहीं चलेगा। कुछ के साथ Validations :on विकल्प :on केवल निर्दिष्ट संदर्भ में चलेगा।

validates_with (* args, और ब्लॉक) दिखाएँ स्रोत
# File activemodel/lib/active_model/validations/with.rb, line 137
def validates_with(*args, &block)
  options = args.extract_options!
  options[:class] = self.class

  args.each do |klass|
    validator = klass.new(options, &block)
    validator.validate(self)
  end
end

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

class Person
  include ActiveModel::Validations

  validate :instance_validations

  def instance_validations
    validates_with MyValidator
  end
end

कृपया अपना स्वयं का सत्यापनकर्ता बनाने के बारे में अधिक जानकारी के लिए वर्ग विधि प्रलेखन से परामर्श करें।

आप इसे कई वर्गों में भी पास कर सकते हैं, जैसे:

class Person
  include ActiveModel::Validations

  validate :instance_validations, on: :create

  def instance_validations
    validates_with MyValidator, MyOtherValidator
  end
end

मानक कॉन्फ़िगरेशन विकल्प ( :on , :if और :unless ), जो कि validates_with के वर्ग संस्करण पर उपलब्ध हैं, को इसके बजाय validates विधि पर रखा जाना चाहिए क्योंकि ये कॉलबैक में लागू और परीक्षण किए जाते हैं।

यदि आप कोई अतिरिक्त कॉन्फ़िगरेशन विकल्प पास करते हैं, तो वे कक्षा में पास हो जाएंगे और options रूप में उपलब्ध होंगे, कृपया अधिक जानकारी के लिए इस पद्धति के वर्ग संस्करण को देखें।

निजी उदाहरण तरीके

raise_validation_error () स्रोत दिखाएं
# File activemodel/lib/active_model/validations.rb, line 413
def raise_validation_error # :doc:
  raise(ValidationError.new(self))
end