module API

Ruby on Rails edge

Since v7.0.10

Available in: v7.0.10 v7.1.6 v7.2.4 v8.0.5.1 v8.1.4 edge

Active Model API

Includes the required interface for an object to interact with Action Pack and Action View, using different Active Model modules. It includes model name introspections, conversions, translations, and validations. Besides that, it allows you to initialize the object with a hash of attributes, pretty much like Active Record does.

A minimal implementation could be:

“‘ class Person

include ActiveModel::API
attr_accessor :name, :age

end

person = Person.new(name: ‘bob’, age: ‘18’) person.name # => “bob” person.age # => “18” “‘

Note that, by default, ActiveModel::API implements #persisted? to return false, which is the most common case. You may want to override it in your class to simulate a different scenario:

“‘ class Person

include ActiveModel::API
attr_accessor :id, :name

def persisted?
  self.id.present?
end

end

person = Person.new(id: 1, name: ‘bob’) person.persisted? # => true “‘

Also, if for some reason you need to run code on initialize ( ::new ), make sure you call super if you want the attributes hash initialization to happen.

“‘ class Person

include ActiveModel::API
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::API (see below).

Includes

Extends

Methods (defined here)

Used by

Included by (2)

Methods (inherited)

From ActiveModel::AttributeAssignment (3)
From ActiveModel::Conversion (5)
From ActiveModel::Naming (7)
From ActiveModel::Translation (3)
From ActiveModel::Validations (9)
From ActiveSupport::Concern (3)
From ActiveModel::Callbacks (1)
From ActiveModel::Validations::HelperMethods (11)
From ActiveSupport::Callbacks (1)
From ActiveSupport::DescendantsTracker (3)

Type at least 2 characters to search.

Use the arrow keys to navigate results, Enter to open one, Escape to close.

Keyboard shortcuts

/
Focus search
⌘K / Ctrl-K
Command palette
?
This help
Esc
Close