Module: ActiveModelPersistence::Persistence::ClassMethods

Defined in:
lib/active_model_persistence/persistence.rb

Overview

When this module is included in another class, ActiveSupport::Concern will make these class methods on that class.

Instance Method Summary collapse

Instance Method Details

#allArray<Object>

Return all model objects that have been saved to the object store

Examples:

array_of_attributes = [
  { id: 1, name: 'James' },
  { id: 2, name: 'Frank' }
]
ModelExample.create(array_of_attributes)
ModelExample.all.count #=> 2
ModelExample.all.map(&:id) #=> [1, 2]
ModelExample.all.map(&:name) #=> ['James', 'Frank']

Returns:

  • (Array<Object>)

    the model objects in the object store



160
161
162
# File 'lib/active_model_persistence/persistence.rb', line 160

def all
  object_array.select { |object| object.is_a?(self) }.each
end

#countInteger Also known as: size

The number of model objects saved in the object store

Examples:

array_of_attributes = [
  { id: 1, name: 'James' },
  { id: 2, name: 'Frank' }
]
ModelExample.create(array_of_attributes)
ModelExample.all.count #=> 2

Returns:

  • (Integer)

    the number of model objects in the object store



176
177
178
# File 'lib/active_model_persistence/persistence.rb', line 176

def count
  object_array.select { |object| object.is_a?(self) }.size
end

#create(attributes = nil, &block) ⇒ Object+

Creates a new model object in to the object store and returns it

Create a new model object passing `attributes` and `block` to `.new` and then calls `#save`.

The new model object is returned even if it could not be saved to the object store.

Examples:

m = ModelExample.new(id: 1, name: 'James')
m.id #=> 1
m.name #=> 'James'

Multiple model objects can be created

array_of_attributes = [
  { id: 1, name: 'James' },
  { id: 2, name: 'Frank' }
]
objects = ModelExample.create(array_of_attributes)
objects.class #=> Array
objects.size #=> 2
objects.first.id #=> 1
objects.map(&:name) #=> ['James', 'Frank']

Parameters:

  • attributes (Hash, Array<Hash>) (defaults to: nil)

    attributes

    The attributes to set on the model object. These are passed to the model's `.new` method.

    Multiple model objects can be created by passing an array of attribute Hashes.

  • block (Proc)

    options

    The block to pass to the model's `.new` method.

Returns:

  • (Object, Array<Object>)

    the model object or array of model objects created



94
95
96
97
98
99
100
# File 'lib/active_model_persistence/persistence.rb', line 94

def create(attributes = nil, &block)
  if attributes.is_a?(Array)
    attributes.collect { |attr| create(attr, &block) }
  else
    new(attributes, &block).tap(&:save)
  end
end

#create!(attributes = nil, &block) ⇒ Object+

Creates a new model object in to the object store

Raises an error if the object could not be created.

Create a new model object passing `attributes` and `block` to `.new` and then calls `#save!`.

Examples:

m = ModelExample.new(id: 1, name: 'James')
m.id #=> 1
m.name #=> 'James'

Multiple model objects can be created

array_of_attributes = [
  { id: 1, name: 'James' },
  { id: 2, name: 'Frank' }
]
objects = ModelExample.create(array_of_attributes)
objects.class #=> Array
objects.size #=> 2
objects.first.id #=> 1
objects.map(&:name) #=> ['James', 'Frank']

Parameters:

  • attributes (Hash, Array<Hash>) (defaults to: nil)

    attributes

    The attributes to set on the model object. These are passed to the model's `.new` method.

    Multiple model objects can be created by passing an array of attribute Hashes.

  • block (Proc)

    options

    The block to pass to the model's `.new` method.

Returns:

  • (Object, Array<Object>)

    the model object or array of model objects created

Raises:

  • (ModelError)

    if the model object could not be created



138
139
140
141
142
143
144
# File 'lib/active_model_persistence/persistence.rb', line 138

def create!(attributes = nil, &block)
  if attributes.is_a?(Array)
    attributes.collect { |attr| create!(attr, &block) }
  else
    new(attributes, &block).tap(&:save!)
  end
end

#destroy_allvoid Also known as: delete_all

This method returns an undefined value.

Removes all model objects from the object store

Each saved model object's `#destroy` method is called.

Examples:

array_of_attributes = [
  { id: 1, name: 'James' },
  { id: 2, name: 'Frank' }
]
ModelExample.create(array_of_attributes)
ModelExample.all.count #=> 2
ModelExample.destroy_all
ModelExample.all.count #=> 0


198
199
200
201
# File 'lib/active_model_persistence/persistence.rb', line 198

def destroy_all
  objects_to_destroy = object_array.select { |object| object.is_a?(self) }
  objects_to_destroy.each(&:destroy)
end