class ActiveRecord::Base::OrmAdapter

def self.except_classes

Do not consider these to be part of the class list
def self.except_classes
  @@except_classes ||= [
    "CGI::Session::ActiveRecordStore::Session",
    "ActiveRecord::SessionStore::Session"
  ]
end

def self.model_classes

Gets a list of the available models for this adapter
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

def column_names

Return list of column/property names
def column_names
  klass.column_names
end

def conditions_to_fields(conditions)

Introspects the klass to convert and objects in conditions into foreign key and type fields
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?
      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
      fields[key] = value
    end
  end
  fields
end

def create!(attributes)

Other tags:
    See: OrmAdapter::Base#create! -
def create!(attributes)
  klass.create!(attributes)
end

def find_all(options)

Other tags:
    See: OrmAdapter::Base#find_all -
def find_all(options)
  conditions, order = extract_conditions_and_order!(options)
  klass.all :conditions => conditions_to_fields(conditions), :order => order_clause(order)
end

def find_first(options)

Other tags:
    See: OrmAdapter::Base#find_first -
def find_first(options)
  conditions, order = extract_conditions_and_order!(options)
  klass.first :conditions => conditions_to_fields(conditions), :order => order_clause(order)
end

def get(id)

Other tags:
    See: OrmAdapter::Base#get -
def get(id)
  klass.first :conditions => { klass.primary_key => wrap_key(id) }
end

def get!(id)

Other tags:
    See: OrmAdapter::Base#get! -
def get!(id)
  klass.find(wrap_key(id))
end

def order_clause(order)

def order_clause(order)
  order.map {|pair| "#{pair[0]} #{pair[1]}"}.join(",")
end