Skip to Content Skip to Search

Active Model Basic Model

Allows implementing models similar to ActiveRecord::Base. Includes ActiveModel::API for the required interface for an object to interact with Action Pack and Action View, but can be extended with other functionalities.

A minimal implementation could be:

class Person include ActiveModel::Model attr_accessor :name, :age end person = Person.new(name: 'bob', age: '18') person.name # => "bob" person.age # => "18" 

If for some reason you need to run code on initialize, make sure you call super if you want the attributes hash initialization to happen.

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 

For more detailed information on other functionalities available, please refer to the specific modules included in ActiveModel::Model (see below).

Methods
S
V
Included Modules

Instance Public methods

slice(*methods)

Returns a hash of the given methods with their names as keys and returned values as values.

person = Person.new(id: 1, name: "bob") person.slice(:id, :name) # => { "id" => 1, "name" => "bob" } 
# File activemodel/lib/active_model/model.rb, line 48 

values_at(*methods)

Returns an array of the values returned by the given methods.

person = Person.new(id: 1, name: "bob") person.values_at(:id, :name) # => [1, "bob"] 
# File activemodel/lib/active_model/model.rb, line 63