модуль ActiveModel::Model
Базовая модель Active Model
Позволяет реализовывать модели, похожие на ActiveRecord::Base. Включает ActiveModel::API, предоставляющий необходимый интерфейс для взаимодействия объекта с Action Pack и Action View, но его можно расширить дополнительными возможностями.
Минимальная реализация может выглядеть так:
class Person include ActiveModel::Model attr_accessor :name, :age end person = Person.new(name: 'bob', age: '18') person.name # => "bob" person.age # => "18"
Если по какой-либо причине вам нужно выполнить код в initialize, обязательно вызовите super, если необходимо инициализировать хеш атрибутов.
class Person
include ActiveModel::Model
attr_accessor :id, :name, :omg
def initialize(attributes={})
super
@omg ||= true
end
end
person = Person.new(id: 1, name: 'bob')
person.omg # => true
Более подробную информацию о других доступных возможностях см. в описании конкретных модулей, включенных в ActiveModel::Model (см. ниже).
Открытые методы экземпляра
# File activemodel/lib/active_model/model.rb, line 48
Возвращает хеш указанных методов, используя их имена в качестве ключей, а возвращаемые значения — в качестве значений.
person = Person.new(id: 1, name: "bob")
person.slice(:id, :name)
# => { "id" => 1, "name" => "bob" }
# File activemodel/lib/active_model/model.rb, line 63
Возвращает массив значений, возвращаемых указанными методами.
person = Person.new(id: 1, name: "bob") person.values_at(:id, :name) # => [1, "bob"]
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.