Ruby on Rails 5.2 - ActiveModel::Model

मॉड्यूल ActiveModel :: मॉडल




ruby

मॉड्यूल ActiveModel :: मॉडल

शामिल मॉड्यूल:
ActiveModel::AttributeAssignment , ActiveModel::Validations , ActiveModel::Conversion

सक्रिय मॉडल मूल मॉडल

ऑब्जेक्ट के लिए आवश्यक इंटरफ़ेस में एक्शन पैक और एक्शन व्यू के साथ अलग-अलग सक्रिय Model मॉड्यूल का उपयोग करना शामिल है। इसमें मॉडल का नाम आत्मनिरीक्षण, रूपांतरण, अनुवाद और सत्यापन शामिल हैं। इसके अलावा, यह आपको विशेषता के हैश के साथ ऑब्जेक्ट को इनिशियलाइज़ करने की अनुमति देता है, जैसे कि बहुत ज्यादा एक्टिव रिकॉर्ड।

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

class Person
  include ActiveModel::Model
  attr_accessor :name, :age
end

person = Person.new(name: 'bob', age: '18')
person.name # => "bob"
person.age  # => "18"

ध्यान दें कि, डिफ़ॉल्ट रूप से, ActiveModel::Model कार्यान्वयन persisted? false वापसी के लिए, जो सबसे आम मामला है। आप एक अलग परिदृश्य का अनुकरण करने के लिए इसे अपनी कक्षा में ओवरराइड कर सकते हैं:

class Person
  include ActiveModel::Model
  attr_accessor :id, :name

  def persisted?
    self.id == 1
  end
end

person = Person.new(id: 1, name: 'bob')
person.persisted? # => true

इसके अलावा, यदि किसी कारण से आपको कोड को initialize करने की आवश्यकता है, तो सुनिश्चित करें कि आप super कॉल करें यदि आप चाहते हैं कि हैश आरंभीकरण हो।

class Person
  include ActiveModel::Model
  attr_accessor :id, :name, :omg

  def initialize(attributes={})
    super
    @omg ||= true
  end
end

person = Person.new(id: 1, name: 'bob')
person.omg # => true

उपलब्ध अन्य कार्यात्मकताओं के बारे में अधिक विस्तृत जानकारी के लिए, कृपया ActiveModel::Model (नीचे देखें) में शामिल विशिष्ट मॉड्यूल देखें।

पब्लिक क्लास के तरीके

नया (विशेषताएँ = {}) स्रोत दिखाएं
# File activemodel/lib/active_model/model.rb, line 80
def initialize(attributes = {})
  assign_attributes(attributes) if attributes

  super()
end

दिए गए params साथ एक नए मॉडल की params

class Person
  include ActiveModel::Model
  attr_accessor :name, :age
end

person = Person.new(name: 'bob', age: '18')
person.name # => "bob"
person.age  # => "18"
सुपरक्लास विधि कहता है

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

# File activemodel/lib/active_model/model.rb, line 95
def persisted?
  false
end

इंगित करता है कि यदि मॉडल कायम है। डिफ़ॉल्ट false

class Person
  include ActiveModel::Model
  attr_accessor :id, :name
end

person = Person.new(id: 1, name: 'bob')
person.persisted? # => false