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.
48
49
50
51
52
53
54
55
56
|
# File 'lib/rails_admin/abstract_model.rb', line 48
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? && model.table_exists?
initialize_active_record
elsif ancestors.include?('Mongoid::Document')
initialize_mongoid
end
end
|
Instance Attribute Details
#adapter ⇒ Object
Returns the value of attribute adapter.
8
9
10
|
# File 'lib/rails_admin/abstract_model.rb', line 8
def adapter
@adapter
end
|
#model_name ⇒ Object
Returns the value of attribute model_name.
8
9
10
|
# File 'lib/rails_admin/abstract_model.rb', line 8
def model_name
@model_name
end
|
Class Method Details
.all(adapter = nil) ⇒ Object
15
16
17
18
|
# File 'lib/rails_admin/abstract_model.rb', line 15
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
21
22
23
24
25
26
27
|
# File 'lib/rails_admin/abstract_model.rb', line 21
def new(m)
m = m.constantize unless m.is_a?(Class)
(am = old_new(m)).model && am.adapter ? am : nil
rescue *([LoadError, NameError] + (defined?(ActiveRecord) ? ['ActiveRecord::NoDatabaseError'.constantize, 'ActiveRecord::ConnectionNotEstablished'.constantize] : []))
puts "[RailsAdmin] Could not load model #{m}, assuming model is non existing. (#{$ERROR_INFO})" unless Rails.env.test?
nil
end
|
.old_new ⇒ Object
20
|
# File 'lib/rails_admin/abstract_model.rb', line 20
alias_method :old_new, :new
|
.polymorphic_parents(adapter, model_name, name) ⇒ Object
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/rails_admin/abstract_model.rb', line 31
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
11
12
13
|
# File 'lib/rails_admin/abstract_model.rb', line 11
def reset
@@all = nil
end
|
.reset_polymorphic_parents ⇒ Object
43
44
45
|
# File 'lib/rails_admin/abstract_model.rb', line 43
def reset_polymorphic_parents
@@polymorphic_parents = {}
end
|
Instance Method Details
#config ⇒ Object
75
76
77
|
# File 'lib/rails_admin/abstract_model.rb', line 75
def config
Config.model self
end
|
#each_associated_children(object) ⇒ Object
95
96
97
98
99
100
101
102
103
104
105
106
|
# File 'lib/rails_admin/abstract_model.rb', line 95
def each_associated_children(object)
associations.each do |association|
case association.type
when :has_one
child = object.send(association.name)
yield(association, [child]) if child
when :has_many
children = object.send(association.name)
yield(association, Array.new(children))
end
end
end
|
108
109
110
|
# File 'lib/rails_admin/abstract_model.rb', line 108
def format_id(id)
id
end
|
#model ⇒ Object
do not store a reference to the model, does not play well with ActiveReload/Rails3.2
59
60
61
|
# File 'lib/rails_admin/abstract_model.rb', line 59
def model
@model_name.constantize
end
|
#param_key ⇒ Object
83
84
85
|
# File 'lib/rails_admin/abstract_model.rb', line 83
def param_key
@model_name.split('::').collect(&:underscore).join('_')
end
|
#parse_id(id) ⇒ Object
112
113
114
|
# File 'lib/rails_admin/abstract_model.rb', line 112
def parse_id(id)
id
end
|
#pretty_name ⇒ Object
87
88
89
|
# File 'lib/rails_admin/abstract_model.rb', line 87
def pretty_name
model.model_name.human
end
|
#quote_column_name(name) ⇒ Object
67
68
69
|
# File 'lib/rails_admin/abstract_model.rb', line 67
def quote_column_name(name)
name
end
|
#quoted_table_name ⇒ Object
63
64
65
|
# File 'lib/rails_admin/abstract_model.rb', line 63
def quoted_table_name
table_name
end
|
#to_param ⇒ Object
79
80
81
|
# File 'lib/rails_admin/abstract_model.rb', line 79
def to_param
@model_name.split('::').collect(&:underscore).join('~')
end
|
#to_s ⇒ Object
71
72
73
|
# File 'lib/rails_admin/abstract_model.rb', line 71
def to_s
model.to_s
end
|
#where(conditions) ⇒ Object
91
92
93
|
# File 'lib/rails_admin/abstract_model.rb', line 91
def where(conditions)
model.where(conditions)
end
|