модуль 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"
Открытые методы класса
# File activemodel/lib/active_model/conversion.rb, line 32 class_attribute :param_delimiter, instance_reader: false, default: "-"
Принимает строку, которая будет использоваться в методе ‘to_param` в качестве разделителя значений ключа объекта.
Открытые методы экземпляра
# 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]
# 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.
# 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"
# 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.