Spec-Zone.ru › Ruby on Rails 4.1

модуль ActiveModel::Conversion

Преобразование Active Model

Обрабатывает стандартные преобразования: #to_model, #to_key, #to_param и to_partial_path.

Давайте рассмотрим, к примеру, этот непростой объект.

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"

Публичные методы экземпляра

to_key() Показать исходный код

Возвращает Enumerable всех атрибутов ключа, если они заданы, независимо от того, является ли объект сохранённым или нет. Возвращает nil если атрибутов ключа нет.

class Person < ActiveRecord::Base
end

person = Person.create
person.to_key # => [1]
# File activemodel/lib/active_model/conversion.rb, line 51
def to_key
  key = respond_to?(:id) && id
  key ? [key] : nil
end
to_model() Показать исходный код

Если ваш объект уже разработан для реализации всех функций Active Model, вы можете использовать стандартную реализацию :to_model, которая просто возвращает self.

class Person
  include ActiveModel::Conversion
end

person = Person.new
person.to_model == person # => true

Если ваш модель не действует как объект Active Model, вы должны определить :to_model самостоятельно, возвращая прокси-объект, который оборачивает ваш объект методами, совместимыми с Active Model.

# File activemodel/lib/active_model/conversion.rb, line 39
def to_model
  self
end
to_param() Показать исходный код

Возвращает string , представляющий ключ объекта, подходящий для использования в URL-адресах, или nil, если persisted? равно false.

class Person < ActiveRecord::Base
end

person = Person.create
person.to_param # => "1"
# File activemodel/lib/active_model/conversion.rb, line 64
def to_param
  (persisted? && key = to_key) ? key.join('-') : nil
end
to_partial_path() Показать исходный код

Возвращает string, определяющий путь, связанный с объектом. ActionPack использует это, чтобы найти подходящую частичную запись объекта.

class Person
  include ActiveModel::Conversion
end

person = Person.new
person.to_partial_path # => "people/person"
# File activemodel/lib/active_model/conversion.rb, line 77
def to_partial_path
  self.class._to_partial_path
end

© 2004–2016 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API