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).
Methods
Included Modules
Class Public methods
new(attributes = {})
Initializes a new model with the given params
.
class Person
include ActiveModel::API
attr_accessor :name, :age
end
person = Person.new(name: 'bob', age: '18')
person.name # => "bob"
person.age # => "18"
📝 Source code
# File activemodel/lib/active_model/api.rb, line 80
def initialize(attributes = {})
assign_attributes(attributes) if attributes
super()
end
🔎 See on GitHub
Instance Public methods
persisted?()
Indicates if the model is persisted. Default is false
.
class Person
include ActiveModel::API
attr_accessor :id, :name
end
person = Person.new(id: 1, name: 'bob')
person.persisted? # => false
📝 Source code
# File activemodel/lib/active_model/api.rb, line 95
def persisted?
false
end
🔎 See on GitHub