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"
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]
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.
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"
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"