модуль 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.