Module: RailsAdminNext::Adapters::ActiveRecord
- Defined in:
- lib/rails_admin_next/adapters/active_record.rb,
lib/rails_admin_next/adapters/active_record/property.rb,
lib/rails_admin_next/adapters/active_record/association.rb,
lib/rails_admin_next/adapters/active_record/object_extension.rb
Defined Under Namespace
Modules: ObjectExtension
Classes: Association, Property, StatementBuilder, WhereBuilder
Constant Summary
collapse
- DISABLED_COLUMN_TYPES =
%i[tsvector blob binary spatial hstore geometry].freeze
Instance Method Summary
collapse
Instance Method Details
#adapter_supports_joins? ⇒ Boolean
109
110
111
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 109
def adapter_supports_joins?
true
end
|
#all(options = {}, scope = nil) ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 32
def all(options = {}, scope = nil)
scope ||= scoped
scope = scope.includes(options[:include]) if options[:include]
scope = scope.limit(options[:limit]) if options[:limit]
scope = bulk_scope(scope, options) if options[:bulk_ids]
scope = query_scope(scope, options[:query]) if options[:query]
scope = filter_scope(scope, options[:filters]) if options[:filters]
scope = sort_scope(scope, options) if options[:sort]
scope = paginate_scope(scope, options[:page], options[:per]) if options[:page] && options[:per]
scope
end
|
#associations ⇒ Object
52
53
54
55
56
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 52
def associations
model.reflect_on_all_associations.collect do |association|
Association.new(association, model)
end
end
|
#base_class ⇒ Object
69
70
71
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 69
def base_class
model.base_class
end
|
#count(options = {}, scope = nil) ⇒ Object
44
45
46
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 44
def count(options = {}, scope = nil)
all(options.merge(limit: false, page: false), scope).count(:all)
end
|
#cyclic? ⇒ Boolean
105
106
107
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 105
def cyclic?
false
end
|
#destroy(objects) ⇒ Object
48
49
50
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 48
def destroy(objects)
Array.wrap(objects).each(&:destroy)
end
|
#embedded? ⇒ Boolean
101
102
103
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 101
def embedded?
false
end
|
#encoding ⇒ Object
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 83
def encoding
adapter = ::ActiveRecord::Base.connection_db_config.configuration_hash[:adapter]
case adapter
when "postgresql"
::ActiveRecord::Base.connection.select_one("SELECT ''::text AS str;").values.first.encoding
when "mysql2"
if RUBY_ENGINE == "jruby"
::ActiveRecord::Base.connection.select_one("SELECT '' AS str;").values.first.encoding
else
::ActiveRecord::Base.connection.raw_connection.encoding
end
when "oracle_enhanced"
::ActiveRecord::Base.connection.select_one("SELECT dummy FROM DUAL").values.first.encoding
else
::ActiveRecord::Base.connection.select_one("SELECT '' AS str;").values.first.encoding
end
end
|
#first(options = {}, scope = nil) ⇒ Object
28
29
30
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 28
def first(options = {}, scope = nil)
all(options, scope).first
end
|
113
114
115
116
117
118
119
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 113
def format_id(id)
if primary_key.is_a? Array
RailsAdminNext.config.composite_keys_serializer.serialize(id)
else
id
end
end
|
#get(id, scope = scoped) ⇒ Object
17
18
19
20
21
22
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 17
def get(id, scope = scoped)
object = primary_key_scope(scope, id).first
return unless object
object.extend(ObjectExtension)
end
|
#new(params = {}) ⇒ Object
13
14
15
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 13
def new(params = {})
model.new(params).extend(ObjectExtension)
end
|
#parse_id(id) ⇒ Object
121
122
123
124
125
126
127
128
129
130
131
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 121
def parse_id(id)
if primary_key.is_a?(Array)
ids = RailsAdminNext.config.composite_keys_serializer.deserialize(id)
primary_key.each_with_index do |key, i|
ids[i] = model.type_for_attribute(key).cast(ids[i])
end
ids
else
id
end
end
|
#properties ⇒ Object
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 58
def properties
columns = model.columns.reject do |c|
c.type.blank? ||
DISABLED_COLUMN_TYPES.include?(c.type.to_sym) ||
c.try(:array)
end
columns.collect do |property|
Property.new(property, model)
end
end
|
#quote_column_name(name) ⇒ Object
79
80
81
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 79
def quote_column_name(name)
model.connection.quote_column_name(name)
end
|
#quoted_table_name ⇒ Object
75
76
77
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 75
def quoted_table_name
model.quoted_table_name
end
|
#scoped ⇒ Object
24
25
26
|
# File 'lib/rails_admin_next/adapters/active_record.rb', line 24
def scoped
model.all
end
|