Module: RailsAdmin::Adapters::Mongoid
- Defined in:
- lib/rails_admin/adapters/mongoid.rb,
lib/rails_admin/adapters/mongoid/extension.rb,
lib/rails_admin/adapters/mongoid/abstract_object.rb
Defined Under Namespace
Modules: Extension
Classes: AbstractObject, Association, StatementBuilder
Constant Summary
collapse
- STRING_TYPE_COLUMN_NAMES =
[:name, :title, :subject]
- DISABLED_COLUMN_TYPES =
['Range', 'Moped::BSON::Binary', "BSON::Binary"]
- ObjectId =
defined?(Moped::BSON) ? Moped::BSON::ObjectId : BSON::ObjectId
Instance Method Summary
collapse
Instance Method Details
#adapter_supports_joins? ⇒ Boolean
99
100
101
|
# File 'lib/rails_admin/adapters/mongoid.rb', line 99
def adapter_supports_joins?
false
end
|
#all(options = {}, scope = nil) ⇒ Object
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/rails_admin/adapters/mongoid.rb', line 38
def all(options = {},scope=nil)
scope ||= self.scoped
scope = scope.includes(*options[:include]) if options[:include]
scope = scope.limit(options[:limit]) if options[:limit]
scope = scope.any_in(:_id => options[:bulk_ids]) if options[:bulk_ids]
scope = scope.where(query_conditions(options[:query])) if options[:query]
scope = scope.where(filter_conditions(options[:filters])) if options[:filters]
if options[:page] && options[:per]
scope = scope.send(Kaminari.config.page_method_name, options[:page]).per(options[:per])
end
scope = sort_by(options, scope) if options[:sort]
scope
end
|
#associations ⇒ Object
64
65
66
67
68
|
# File 'lib/rails_admin/adapters/mongoid.rb', line 64
def associations
model.associations.values.map do |association|
Association.new(association, model).to_options_hash
end
end
|
#count(options = {}, scope = nil) ⇒ Object
52
53
54
|
# File 'lib/rails_admin/adapters/mongoid.rb', line 52
def count(options = {},scope=nil)
all(options.merge({:limit => false, :page => false}), scope).count
end
|
#cyclic? ⇒ Boolean
95
96
97
|
# File 'lib/rails_admin/adapters/mongoid.rb', line 95
def cyclic?
@cyclic ||= !!model.cyclic?
end
|
#destroy(objects) ⇒ Object
56
57
58
|
# File 'lib/rails_admin/adapters/mongoid.rb', line 56
def destroy(objects)
Array.wrap(objects).each &:destroy
end
|
#embedded? ⇒ Boolean
91
92
93
|
# File 'lib/rails_admin/adapters/mongoid.rb', line 91
def embedded?
@embedded ||= !!model.associations.values.find{|a| a.macro.to_sym == :embedded_in }
end
|
#encoding ⇒ Object
87
88
89
|
# File 'lib/rails_admin/adapters/mongoid.rb', line 87
def encoding
'UTF-8'
end
|
#first(options = {}, scope = nil) ⇒ Object
34
35
36
|
# File 'lib/rails_admin/adapters/mongoid.rb', line 34
def first(options = {},scope=nil)
all(options, scope).first
end
|
#get(id) ⇒ Object
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/rails_admin/adapters/mongoid.rb', line 17
def get(id)
begin
AbstractObject.new(model.find(id))
rescue => e
raise e if %w[
BSON::InvalidObjectId
Mongoid::Errors::DocumentNotFound
Mongoid::Errors::InvalidFind
Moped::Errors::InvalidObjectId
].exclude?(e.class.to_s)
end
end
|
#new(params = {}) ⇒ Object
13
14
15
|
# File 'lib/rails_admin/adapters/mongoid.rb', line 13
def new(params = {})
AbstractObject.new(model.new)
end
|
#primary_key ⇒ Object
60
61
62
|
# File 'lib/rails_admin/adapters/mongoid.rb', line 60
def primary_key
'_id'
end
|
#properties ⇒ Object
70
71
72
73
74
75
76
77
78
79
80
81
|
# File 'lib/rails_admin/adapters/mongoid.rb', line 70
def properties
fields = model.fields.reject{|name, field| DISABLED_COLUMN_TYPES.include?(field.type.to_s) }
fields.map do |name,field|
{
:name => field.name.to_sym,
:length => nil,
:pretty_name => field.name.to_s.gsub('_', ' ').strip.capitalize,
:nullable? => true,
:serial? => false,
}.merge(type_lookup(name, field))
end
end
|
#scoped ⇒ Object
30
31
32
|
# File 'lib/rails_admin/adapters/mongoid.rb', line 30
def scoped
model.scoped
end
|
#table_name ⇒ Object
83
84
85
|
# File 'lib/rails_admin/adapters/mongoid.rb', line 83
def table_name
model.collection_name.to_s
end
|