Module: ActiveModel::Conversion

Extended by:
ActiveSupport::Concern
Included in:
ActiveRecord::Base, ActiveResource::Base
Defined in:
activemodel/lib/active_model/conversion.rb

Overview

Active Model Conversions

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 == self # => true
cm.to_key           # => nil
cm.to_param         # => nil
cm.to_path          # => "contact_messages/contact_message"

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Methods included from ActiveSupport::Concern

append_features, extended, included

Instance Method Details

#to_keyObject

Returns an Enumerable of all key attributes if any is set, regardless if the object is persisted or not.

Note the default implementation uses persisted? just because all objects in Ruby 1.8.x responds to :id.


45
46
47
# File 'activemodel/lib/active_model/conversion.rb', line 45

def to_key
  persisted? ? [id] : nil
end

#to_modelObject

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.

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.


36
37
38
# File 'activemodel/lib/active_model/conversion.rb', line 36

def to_model
  self
end

#to_paramObject

Returns a string representing the object's key suitable for use in URLs, or nil if persisted? is false.


51
52
53
# File 'activemodel/lib/active_model/conversion.rb', line 51

def to_param
  persisted? ? to_key.join('-') : nil
end

#to_partial_pathObject

Returns a string identifying the path associated with the object. ActionPack uses this to find a suitable partial to represent the object.


57
58
59
# File 'activemodel/lib/active_model/conversion.rb', line 57

def to_partial_path
  self.class._to_partial_path
end