forked from ianwhite/pickle
/
active_record.rb
57 lines (48 loc) · 1.44 KB
/
active_record.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
begin
require 'active_record'
rescue LoadError
require 'activerecord'
end
class ActiveRecord::Base
module PickleAdapter
include Pickle::Adapter::Base
# 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
# 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? && klass.table_exists? && !except_classes.include?(klass.name)
end
end
# get a list of column names for a given class
def self.column_names(klass)
klass.column_names
end
# Get an instance by id of the model
def self.get_model(klass, id)
klass.find(id)
end
# Find the first instance matching conditions
def self.find_first_model(klass, conditions)
klass.find(:first, :conditions => conditions)
end
# Find all models matching conditions
def self.find_all_models(klass, conditions)
klass.find(:all, :conditions => conditions)
end
# Create a model using attributes
def self.create_model(klass, attributes)
klass.create!(attributes)
end
end
end