Module: ActiveModel::Conversion
Relationships & Source Files | |
Namespace Children | |
Modules:
| |
Extension / Inclusion / Inheritance Descendants | |
Included In:
| |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
::ActiveSupport::Concern
|
|
Defined in: | activemodel/lib/active_model/conversion.rb |
Overview
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"
Class Method Summary
::ActiveSupport::Concern
- Extended
class_methods | Define class methods from given block. |
included | Evaluate given block in context of base class, so that you can write class macros here. |
prepended | Evaluate given block in context of base class, so that you can write class macros here. |
append_features, prepend_features |
Instance Method Summary
-
#to_key
Returns an
::Array
of all key attributes if any of the attributes is set, whether or not the object is persisted. -
#to_model
If your object is already designed to implement all of the Active Model you can use the default
:to_model
implementation, which simply returnsself
. -
#to_param
Returns a
string
representing the object’s key suitable for use in URLs, ornil
ifpersisted?
isfalse
. -
#to_partial_path
Returns a
string
identifying the path associated with the object.
DSL Calls
included
[ GitHub ]27 28 29 30 31 32 33
# File 'activemodel/lib/active_model/conversion.rb', line 27
included do ## # :singleton-method: # # Accepts a string that will be used as a delimiter of object's key values in the `to_param` method. class_attribute :param_delimiter, instance_reader: false, default: "-" end
Instance Method Details
#to_key
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]
# File 'activemodel/lib/active_model/conversion.rb', line 67
def to_key key = respond_to?(:id) && id key ? Array(key) : nil end
#to_model
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.
# File 'activemodel/lib/active_model/conversion.rb', line 49
def to_model self end
#to_param
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"
# File 'activemodel/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
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"
# File 'activemodel/lib/active_model/conversion.rb', line 103
def to_partial_path self.class._to_partial_path end