Ruby on Rails 5.2 - ActiveModel::Conversion

मॉड्यूल ActiveModel :: रूपांतरण




ruby

मॉड्यूल ActiveModel :: रूपांतरण

सक्रिय मॉडल रूपांतरण

डिफ़ॉल्ट रूपांतरणों को संभालता है: #to_model , #to_key , #to_param , और to_partial_path।

आइए इस गैर-जारी वस्तु का उदाहरण लें।

class ContactMessage
  include ActiveModel::Conversion

  # ContactMessage are never persisted in the DB
  def persisted?
    false
  end
end

cm = ContactMessage.new
cm.to_model == cm  # => true
cm.to_key          # => nil
cm.to_param        # => nil
cm.to_partial_path # => "contact_messages/contact_message"

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

# File activemodel/lib/active_model/conversion.rb, line 59
def to_key
  key = respond_to?(:id) && id
  key ? [key] : nil
end

किसी भी विशेषता के सेट होने पर सभी प्रमुख विशेषताओं का एक Array लौटाता है, चाहे वह वस्तु बनी रहे या नहीं। यदि कोई महत्वपूर्ण विशेषता नहीं है, तो रिटर्न देता है।

class Person
  include ActiveModel::Conversion
  attr_accessor :id

  def initialize(id)
    @id = id
  end
end

person = Person.new(1)
person.to_key # => [1]
# File activemodel/lib/active_model/conversion.rb, line 41
def to_model
  self
end

यदि आपकी वस्तु पहले से ही सक्रिय मॉडल के सभी को लागू करने के लिए डिज़ाइन की गई है, तो आप डिफ़ॉल्ट :to_model कार्यान्वयन का उपयोग कर सकते हैं, जो केवल self लौटाता है।

class Person
  include ActiveModel::Conversion
end

person = Person.new
person.to_model == person # => true

यदि आपका मॉडल सक्रिय मॉडल ऑब्जेक्ट की तरह कार्य नहीं करता है, तो आपको परिभाषित करना चाहिए :to_model अपने आप को एक प्रॉक्सी ऑब्जेक्ट लौटाता है जो सक्रिय ऑब्जेक्ट के अनुरूप तरीकों से आपकी ऑब्जेक्ट को लपेटता है।

# File activemodel/lib/active_model/conversion.rb, line 82
def to_param
  (persisted? && key = to_key) ? key.join("-") : nil
end

यदि persisted? , तो URL में उपयोग के लिए उपयुक्त वस्तु की कुंजी का प्रतिनिधित्व करने वाली string , या nil persisted? false

class Person
  include ActiveModel::Conversion
  attr_accessor :id

  def initialize(id)
    @id = id
  end

  def persisted?
    true
  end
end

person = Person.new(1)
person.to_param # => "1"
# File activemodel/lib/active_model/conversion.rb, line 95
def to_partial_path
  self.class._to_partial_path
end

ऑब्जेक्ट से जुड़े पथ की पहचान करने वाला एक string लौटाता है। ActionPack ऑब्जेक्ट का प्रतिनिधित्व करने के लिए एक उपयुक्त आंशिक खोजने के लिए इसका उपयोग करता है।

class Person
  include ActiveModel::Conversion
end

person = Person.new
person.to_partial_path # => "people/person"