OrmAdapter::ActiveRecord

Public Class Methods

except_classes() click to toggle source

Do not consider these to be part of the class list

# File lib/orm_adapter/adapters/active_record.rb, line 10
def self.except_classes
  @@except_classes ||= [
    "CGI::Session::ActiveRecordStore::Session",
    "ActiveRecord::SessionStore::Session"
  ]
end
model_classes() click to toggle source

Gets a list of the available models for this adapter

# File lib/orm_adapter/adapters/active_record.rb, line 18
def self.model_classes
  begin
    klasses = ::ActiveRecord::Base.__send__(:descendants) # Rails 3
  rescue
    klasses = ::ActiveRecord::Base.__send__(:subclasses) # Rails 2
  end

  klasses.select do |klass|
    !klass.abstract_class? && !except_classes.include?(klass.name)
  end
end

Public Instance Methods

column_names() click to toggle source

Return list of column/property names

# File lib/orm_adapter/adapters/active_record.rb, line 31
def column_names
  klass.column_names
end
create!(attributes) click to toggle source

@see OrmAdapter::Base#create!

# File lib/orm_adapter/adapters/active_record.rb, line 58
def create!(attributes)
  klass.create!(attributes)
end
find_all(options) click to toggle source

@see OrmAdapter::Base#find_all

# File lib/orm_adapter/adapters/active_record.rb, line 52
def find_all(options)
  conditions, order = extract_conditions_and_order!(options)
  klass.all :conditions => conditions_to_fields(conditions), :order => order_clause(order)
end
find_first(options) click to toggle source

@see OrmAdapter::Base#find_first

# File lib/orm_adapter/adapters/active_record.rb, line 46
def find_first(options)
  conditions, order = extract_conditions_and_order!(options)
  klass.first :conditions => conditions_to_fields(conditions), :order => order_clause(order)
end
get(id) click to toggle source

@see OrmAdapter::Base#get

# File lib/orm_adapter/adapters/active_record.rb, line 41
def get(id)
  klass.first :conditions => { klass.primary_key => wrap_key(id) }
end
get!(id) click to toggle source

@see OrmAdapter::Base#get!

# File lib/orm_adapter/adapters/active_record.rb, line 36
def get!(id)
  klass.find(wrap_key(id))
end

Protected Instance Methods

conditions_to_fields(conditions) click to toggle source

Introspects the klass to convert and objects in conditions into foreign key and type fields

# File lib/orm_adapter/adapters/active_record.rb, line 65
def conditions_to_fields(conditions)
  fields = {}
  conditions.each do |key, value|
    if value.is_a?(::ActiveRecord::Base) && (assoc = klass.reflect_on_association(key.to_sym)) && assoc.belongs_to?

      if ::ActiveRecord::VERSION::STRING < "3.1"
        fields[assoc.primary_key_name] = value.send(value.class.primary_key)
        fields[assoc.options[:foreign_type]] = value.class.base_class.name.to_s if assoc.options[:polymorphic]
      else # >= 3.1
        fields[assoc.foreign_key] = value.send(value.class.primary_key)
        fields[assoc.foreign_type] = value.class.base_class.name.to_s if assoc.options[:polymorphic]
      end

    else
      fields[key] = value
    end
  end
  fields
end
order_clause(order) click to toggle source
# File lib/orm_adapter/adapters/active_record.rb, line 85
def order_clause(order)
  order.map {|pair| "#{pair[0]} #{pair[1]}"}.join(",")
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.