Class: Dbee::Base
- Inherits:
-
Object
- Object
- Dbee::Base
- Defined in:
- lib/dbee/base.rb
Overview
Instead of using the configuration-first approach, you could use this super class for Model declaration.
Class Method Summary collapse
- .association(name, opts = {}) ⇒ Object
- .associations_by_name ⇒ Object
- .inherited_associations_by_name ⇒ Object
- .inherited_table_name ⇒ Object
- .table(name) ⇒ Object
- .table_name ⇒ Object
- .table_name? ⇒ Boolean
- .to_model(name = nil, constraints = [], from = nil) ⇒ Object
Class Method Details
.association(name, opts = {}) ⇒ Object
21 22 23 24 25 |
# File 'lib/dbee/base.rb', line 21 def association(name, opts = {}) associations_by_name[name.to_s] = opts.merge(name: name) self end |
.associations_by_name ⇒ Object
38 39 40 |
# File 'lib/dbee/base.rb', line 38 def associations_by_name @associations_by_name ||= {} end |
.inherited_associations_by_name ⇒ Object
50 51 52 53 54 |
# File 'lib/dbee/base.rb', line 50 def inherited_associations_by_name reversed_subclasses.each_with_object({}) do |subclass, memo| memo.merge!(subclass.associations_by_name) end end |
.inherited_table_name ⇒ Object
46 47 48 |
# File 'lib/dbee/base.rb', line 46 def inherited_table_name subclasses.find(&:table_name?)&.table_name || '' end |
.table(name) ⇒ Object
15 16 17 18 19 |
# File 'lib/dbee/base.rb', line 15 def table(name) @table_name = name.to_s self end |
.table_name ⇒ Object
34 35 36 |
# File 'lib/dbee/base.rb', line 34 def table_name @table_name || '' end |
.table_name? ⇒ Boolean
42 43 44 |
# File 'lib/dbee/base.rb', line 42 def table_name? !table_name.empty? end |
.to_model(name = nil, constraints = [], from = nil) ⇒ Object
27 28 29 30 31 32 |
# File 'lib/dbee/base.rb', line 27 def to_model(name = nil, constraints = [], from = nil) name = derive_name(name) key = [name, constraints, from] to_models[key] ||= Model.make(model_config(name, constraints, from)) end |