module ActiveModel::Conversion
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"
Public Instance Methods
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 lib/active_model/conversion.rb, line 57 def to_key key = respond_to?(:id) && id key ? [key] : nil end
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 lib/active_model/conversion.rb, line 39 def to_model self end
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 lib/active_model/conversion.rb, line 80 def to_param (persisted? && key = to_key) ? key.join("-") : nil end
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 lib/active_model/conversion.rb, line 93 def to_partial_path self.class._to_partial_path end