Module: ActiveModel::Conversion
Relationships & Source Files | |
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
Instance Method Summary
-
#to_key
Returns an ::Array of all key attributes if any is set, regardless if the object is persisted or not.
-
#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.
Instance Method Details
#to_key
Returns an ::Array of all key attributes if any is set, regardless if the object is persisted or not. Returns nil
if there are no key attributes.
class Person
include ActiveModel::Conversion
attr_accessor :id
end
person = Person.create(id: 1)
person.to_key # => [1]
# File 'activemodel/lib/active_model/conversion.rb', line 53
def to_key key = respond_to?(:id) && id key ? [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 39
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 persisted?
true
end
end
person = Person.create(id: 1)
person.to_param # => "1"
# File 'activemodel/lib/active_model/conversion.rb', line 71
def to_param (persisted? && key = to_key) ? key.join('-') : 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 84
def to_partial_path self.class._to_partial_path end