Class: RailsAdminNext::AbstractModel
- Inherits:
-
Object
- Object
- RailsAdminNext::AbstractModel
show all
- Defined in:
- lib/rails_admin_next/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.
46
47
48
49
50
51
52
|
# File 'lib/rails_admin_next/abstract_model.rb', line 46
def initialize(model_or_model_name)
@model_name = model_or_model_name.to_s
ancestors = model.ancestors.collect(&:to_s)
return unless ancestors.include?("ActiveRecord::Base") && !model.abstract_class? && model.table_exists?
initialize_active_record
end
|
Instance Attribute Details
#adapter ⇒ Object
Returns the value of attribute adapter.
6
7
8
|
# File 'lib/rails_admin_next/abstract_model.rb', line 6
def adapter
@adapter
end
|
#model_name ⇒ Object
Returns the value of attribute model_name.
6
7
8
|
# File 'lib/rails_admin_next/abstract_model.rb', line 6
def model_name
@model_name
end
|
Class Method Details
.all(adapter = nil) ⇒ Object
13
14
15
16
|
# File 'lib/rails_admin_next/abstract_model.rb', line 13
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
19
20
21
22
23
24
25
|
# File 'lib/rails_admin_next/abstract_model.rb', line 19
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 "[RailsAdminNext] Could not load model #{m}, assuming model is non existing. (#{$ERROR_INFO})" unless Rails.env.test?
nil
end
|
.old_new ⇒ Object
18
|
# File 'lib/rails_admin_next/abstract_model.rb', line 18
alias_method :old_new, :new
|
.polymorphic_parents(adapter, model_name, name) ⇒ Object
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/rails_admin_next/abstract_model.rb', line 29
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
9
10
11
|
# File 'lib/rails_admin_next/abstract_model.rb', line 9
def reset
@@all = nil
end
|
.reset_polymorphic_parents ⇒ Object
41
42
43
|
# File 'lib/rails_admin_next/abstract_model.rb', line 41
def reset_polymorphic_parents
@@polymorphic_parents = {}
end
|
Instance Method Details
#config ⇒ Object
72
73
74
|
# File 'lib/rails_admin_next/abstract_model.rb', line 72
def config
Config.model self
end
|
#each_associated_children(object) ⇒ Object
92
93
94
95
96
97
98
99
100
101
102
103
|
# File 'lib/rails_admin_next/abstract_model.rb', line 92
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
|
105
106
107
|
# File 'lib/rails_admin_next/abstract_model.rb', line 105
def format_id(id)
id
end
|
#model ⇒ Object
Re-resolve via constantize on every call instead of caching @model: Rails reloads
classes in development, and a cached Class object would go stale after a reload.
56
57
58
|
# File 'lib/rails_admin_next/abstract_model.rb', line 56
def model
@model_name.constantize
end
|
#param_key ⇒ Object
80
81
82
|
# File 'lib/rails_admin_next/abstract_model.rb', line 80
def param_key
@model_name.split("::").collect(&:underscore).join("_")
end
|
#parse_id(id) ⇒ Object
109
110
111
|
# File 'lib/rails_admin_next/abstract_model.rb', line 109
def parse_id(id)
id
end
|
#pretty_name ⇒ Object
84
85
86
|
# File 'lib/rails_admin_next/abstract_model.rb', line 84
def pretty_name
model.model_name.human
end
|
#quote_column_name(name) ⇒ Object
64
65
66
|
# File 'lib/rails_admin_next/abstract_model.rb', line 64
def quote_column_name(name)
name
end
|
#quoted_table_name ⇒ Object
60
61
62
|
# File 'lib/rails_admin_next/abstract_model.rb', line 60
def quoted_table_name
table_name
end
|
#to_param ⇒ Object
76
77
78
|
# File 'lib/rails_admin_next/abstract_model.rb', line 76
def to_param
@model_name.split("::").collect(&:underscore).join("~")
end
|
#to_s ⇒ Object
68
69
70
|
# File 'lib/rails_admin_next/abstract_model.rb', line 68
def to_s
model.to_s
end
|
#where(conditions) ⇒ Object
88
89
90
|
# File 'lib/rails_admin_next/abstract_model.rb', line 88
def where(conditions)
model.where(conditions)
end
|