Spec-Zone.ru › Ruby on Rails 8.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"

Открытые методы класса

param_delimiter () Показать исходный код
# File activemodel/lib/active_model/conversion.rb, line 32
class_attribute :param_delimiter, instance_reader: false, default: "-"

Принимает строку, которая будет использоваться в методе ‘to_param` в качестве разделителя значений ключа объекта.

Открытые методы экземпляра

to_key () Показать исходный код
# File activemodel/lib/active_model/conversion.rb, line 67
def to_key
  key = respond_to?(:id) && id
  key ? Array(key) : nil
end

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

class Person
  include ActiveModel::Conversion
  attr_accessor :id

  def initialize(id)
    @id = id
  end
end

person = Person.new(1)
person.to_key # => [1]
to_model () Показать исходный код
# File activemodel/lib/active_model/conversion.rb, line 49
def to_model
  self
end

Если ваш объект уже реализует все возможности 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.

to_param () Показать исходный код
# 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

Возвращает string, представляющую ключ объекта и подходящую для использования в URL, либо nil, если persisted? равно 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"
to_partial_path () Показать исходный код
# File activemodel/lib/active_model/conversion.rb, line 103
def to_partial_path
  self.class._to_partial_path
end

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

class Person
  include ActiveModel::Conversion
end

person = Person.new
person.to_partial_path # => "people/person"

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

Spec-Zone.ru

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