Class: RailsAdmin::AbstractModel
- Inherits:
-
Object
- Object
- RailsAdmin::AbstractModel
show all
- Defined in:
- lib/rails_admin/abstract_model.rb
Defined Under Namespace
Classes: StatementBuilder
Constant Summary
collapse
- @@polymorphic_parents =
{}
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(model_or_model_name) ⇒ AbstractModel
Returns a new instance of AbstractModel.
44
45
46
47
48
49
50
51
52
|
# File 'lib/rails_admin/abstract_model.rb', line 44
def initialize(model_or_model_name)
@model_name = model_or_model_name.to_s
ancestors = model.ancestors.collect(&:to_s)
if ancestors.include?('ActiveRecord::Base') && !model.abstract_class?
initialize_active_record
elsif ancestors.include?('Mongoid::Document')
initialize_mongoid
end
end
|
Instance Attribute Details
#adapter ⇒ Object
Returns the value of attribute adapter.
4
5
6
|
# File 'lib/rails_admin/abstract_model.rb', line 4
def adapter
@adapter
end
|
#model_name ⇒ Object
Returns the value of attribute model_name.
4
5
6
|
# File 'lib/rails_admin/abstract_model.rb', line 4
def model_name
@model_name
end
|
Class Method Details
.all(adapter = nil) ⇒ Object
11
12
13
14
|
# File 'lib/rails_admin/abstract_model.rb', line 11
def all(adapter = nil)
@@all ||= Config.models_pool.collect { |m| new(m) }.compact
adapter ? @@all.select { |m| m.adapter == adapter } : @@all
end
|
.new(m) ⇒ Object
17
18
19
20
21
22
23
|
# File 'lib/rails_admin/abstract_model.rb', line 17
def new(m)
m = m.constantize unless m.is_a?(Class)
(am = old_new(m)).model && am.adapter ? am : nil
rescue LoadError, NameError
puts "[RailsAdmin] Could not load model #{m}, assuming model is non existing. (#{$ERROR_INFO})" unless Rails.env.test?
nil
end
|
.old_new ⇒ Object
16
|
# File 'lib/rails_admin/abstract_model.rb', line 16
alias_method :old_new, :new
|
.polymorphic_parents(adapter, model_name, name) ⇒ Object
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/rails_admin/abstract_model.rb', line 27
def polymorphic_parents(adapter, model_name, name)
@@polymorphic_parents[adapter.to_sym] ||= {}.tap do |hash|
all(adapter).each do |am|
am.associations.select(&:as).each do |association|
(hash[[association.klass.to_s.underscore, association.as].join('_').to_sym] ||= []) << am.model
end
end
end
@@polymorphic_parents[adapter.to_sym][[model_name.to_s.underscore, name].join('_').to_sym]
end
|
.reset ⇒ Object
7
8
9
|
# File 'lib/rails_admin/abstract_model.rb', line 7
def reset
@@all = nil
end
|
.reset_polymorphic_parents ⇒ Object
39
40
41
|
# File 'lib/rails_admin/abstract_model.rb', line 39
def reset_polymorphic_parents
@@polymorphic_parents = {}
end
|
Instance Method Details
#config ⇒ Object
63
64
65
|
# File 'lib/rails_admin/abstract_model.rb', line 63
def config
Config.model self
end
|
#each_associated_children(object) ⇒ Object
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# File 'lib/rails_admin/abstract_model.rb', line 83
def each_associated_children(object)
associations.each do |association|
case association.type
when :has_one
if child = object.send(association.name)
yield(association, child)
end
when :has_many
object.send(association.name).each do |child| yield(association, child)
end
end
end
end
|
#model ⇒ Object
do not store a reference to the model, does not play well with ActiveReload/Rails3.2
55
56
57
|
# File 'lib/rails_admin/abstract_model.rb', line 55
def model
@model_name.constantize
end
|
#param_key ⇒ Object
71
72
73
|
# File 'lib/rails_admin/abstract_model.rb', line 71
def param_key
@model_name.split('::').collect(&:underscore).join('_')
end
|
#pretty_name ⇒ Object
75
76
77
|
# File 'lib/rails_admin/abstract_model.rb', line 75
def pretty_name
model.model_name.human
end
|
#to_param ⇒ Object
67
68
69
|
# File 'lib/rails_admin/abstract_model.rb', line 67
def to_param
@model_name.split('::').collect(&:underscore).join('~')
end
|
#to_s ⇒ Object
59
60
61
|
# File 'lib/rails_admin/abstract_model.rb', line 59
def to_s
model.to_s
end
|
#where(conditions) ⇒ Object
79
80
81
|
# File 'lib/rails_admin/abstract_model.rb', line 79
def where(conditions)
model.where(conditions)
end
|