модуль 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 использует это для поиска подходящего частичного представления для представления объекта.
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.