Module: ActiveModel::Conversion
Overview
Active Model Conversion
Handles default conversions: to_model, to_key, to_param, and to_partial_path.
Let’s take for example this non-persisted object.
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"
  Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- 
  
    
      #to_key  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns an Array of all key attributes if any of the attributes is set, whether or not the object is persisted.
 - 
  
    
      #to_model  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
If your object is already designed to implement all of the Active Model you can use the default
:to_modelimplementation, which simply returnsself. - 
  
    
      #to_param  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns a
stringrepresenting the object’s key suitable for use in URLs, ornilifpersisted?isfalse. - 
  
    
      #to_partial_path  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns a
stringidentifying the path associated with the object. 
Instance Method Details
#to_key ⇒ Object
Returns an Array of all key attributes if any of the attributes is set, whether or not the object is persisted. Returns nil if there are no key attributes.
class Person
  include ActiveModel::Conversion
  attr_accessor :id
  def initialize(id)
    @id = id
  end
end
person = Person.new(1)
person.to_key # => [1]
  
      67 68 69 70  | 
    
      # File 'lib/active_model/conversion.rb', line 67 def to_key key = respond_to?(:id) && id key ? Array(key) : nil end  | 
  
#to_model ⇒ Object
If your object is already designed to implement all of the Active Model you can use the default :to_model implementation, which simply returns self.
class Person
  include ActiveModel::Conversion
end
person = Person.new
person.to_model == person # => true
If your model does not act like an Active Model object, then you should define :to_model yourself returning a proxy object that wraps your object with Active Model compliant methods.
      49 50 51  | 
    
      # File 'lib/active_model/conversion.rb', line 49 def to_model self end  | 
  
#to_param ⇒ Object
Returns a string representing the object’s key suitable for use in URLs, or nil if persisted? is 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"
  
      90 91 92  | 
    
      # File 'lib/active_model/conversion.rb', line 90 def to_param (persisted? && (key = to_key) && key.all?) ? key.join(self.class.param_delimiter) : nil end  | 
  
#to_partial_path ⇒ Object
Returns a string identifying the path associated with the object. ActionPack uses this to find a suitable partial to represent the object.
class Person
  include ActiveModel::Conversion
end
person = Person.new
person.to_partial_path # => "people/person"
  
      103 104 105  | 
    
      # File 'lib/active_model/conversion.rb', line 103 def to_partial_path self.class._to_partial_path end  |