class ActiveRecord::Base::OrmAdapter
def self.except_classes
def self.except_classes @@except_classes ||= [ "CGI::Session::ActiveRecordStore::Session", "ActiveRecord::SessionStore::Session" ] end
def self.model_classes
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
def column_names klass.column_names end
def conditions_to_fields(conditions)
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)
- See: OrmAdapter::Base#create! -
def create!(attributes) klass.create!(attributes) end
def find_all(options)
- 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)
- 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)
- See: OrmAdapter::Base#get -
def get(id) klass.first :conditions => { klass.primary_key => wrap_key(id) } end
def get!(id)
- 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