class Devise::Activeresource::Adapter

Adapter based on orm_adapter interface github.com/ianwhite/orm_adapter/blob/master/lib/orm_adapter/base.rb

Attributes

klass[R]

Public Class Methods

new(klass) click to toggle source
# File lib/devise/activeresource/adapter.rb, line 8
def initialize(klass)
  @klass = klass
end

Public Instance Methods

column_names() click to toggle source

Get a list of column/property/field names

# File lib/devise/activeresource/adapter.rb, line 13
def column_names
  klass.attributes
end
create!(attributes = {}) click to toggle source

Create a model using attributes

# File lib/devise/activeresource/adapter.rb, line 62
def create!(attributes = {})
  klass.create(attributes)
end
destroy(object) click to toggle source

Destroy an instance by passing in the instance itself.

# File lib/devise/activeresource/adapter.rb, line 67
def destroy(object)
  object.destroy
end
find_all(options = {}) click to toggle source

Find all models, optionally matching conditions, and specifying order @see OrmAdapter::Base#find_first for how to specify order and conditions

# File lib/devise/activeresource/adapter.rb, line 55
def find_all(options = {})
  conditions, limit, offset = extract_conditions!(options)
  params = conditions.merge(limit_offset_hash(limit, offset))
  klass.find(:all, params: params)
end
find_first(options = {}) click to toggle source

Find the first instance, optionally matching conditions

You can call with just conditions, providing a hash

User.to_adapter.find_first :name => "Fred", :age => 23

User.to_adapter.find_first :conditions => {:name => "Fred", :age => 23}
# File lib/devise/activeresource/adapter.rb, line 45
def find_first(options = {})
  conditions, limit, offset = extract_conditions!(options)
  params = conditions.merge(limit_offset_hash(limit, offset))
  klass.find(:first, params: params)
rescue ActiveResource::InvalidRequestError
  nil
end
get(id) click to toggle source

Get an instance by id of the model. Returns nil if a model is not found. This should comply with ActiveModel#to_key API, i.e.:

User.to_adapter.get(@user.to_key) == @user
# File lib/devise/activeresource/adapter.rb, line 31
def get(id)
  klass.find(wrap_key(id))
rescue ActiveResource::ResourceNotFound
  nil
end
get!(id) click to toggle source

Get an instance by id of the model. Raises an error if a model is not found. This should comply with ActiveModel#to_key API, i.e.:

User.to_adapter.get!(@user.to_key) == @user
# File lib/devise/activeresource/adapter.rb, line 22
def get!(id)
  klass.find(wrap_key(id))
end

Protected Instance Methods

extract_conditions!(options = {}) click to toggle source

given an options hash, with optional :conditions, :limit and :offset keys, returns conditions, limit and offset

# File lib/devise/activeresource/adapter.rb, line 84
def extract_conditions!(options = {})
  _order     = options.delete(:order)
  limit      = options.delete(:limit)
  offset     = options.delete(:offset)
  conditions = options.delete(:conditions) || options

  [conditions, limit, offset]
end
limit_offset_hash(limit, offset) click to toggle source
# File lib/devise/activeresource/adapter.rb, line 93
def limit_offset_hash(limit, offset)
  response = {}
  response[:limit] = limit if limit && limit > 1
  response[:offset] = offset if offset && offset > 1
  response
end
valid_object?(object) click to toggle source
# File lib/devise/activeresource/adapter.rb, line 73
def valid_object?(object)
  object.class == klass
end
wrap_key(key) click to toggle source
# File lib/devise/activeresource/adapter.rb, line 77
def wrap_key(key)
  key.is_a?(Array) ? key.first : key
end