Class: DynamicActiveModel::Factory
- Inherits:
-
Object
- Object
- DynamicActiveModel::Factory
- Defined in:
- lib/dynamic-active-model/factory.rb
Overview
DynamicActiveModel::Factory creates ActiveRecord class for tables
Instance Attribute Summary collapse
-
#base_class ⇒ Object
rubocop:disable MethodLength.
Instance Method Summary collapse
- #create(table_name, class_name = nil) ⇒ Object
-
#generate_class_name(table_name) ⇒ Object
rubocop:enable MethodLength.
-
#initialize(base_module, connection_options, base_class_name = nil) ⇒ Factory
constructor
A new instance of Factory.
Constructor Details
#initialize(base_module, connection_options, base_class_name = nil) ⇒ Factory
Returns a new instance of Factory.
8 9 10 11 12 |
# File 'lib/dynamic-active-model/factory.rb', line 8 def initialize(base_module, , base_class_name = nil) @base_module = base_module = @base_class_name = base_class_name || :DynamicAbstractBase end |
Instance Attribute Details
#base_class ⇒ Object
rubocop:disable MethodLength
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/dynamic-active-model/factory.rb', line 24 def base_class @base_class ||= begin require 'active_record' kls = Class.new(ActiveRecord::Base) do self.abstract_class = true end @base_module.const_set(@base_class_name, kls) kls = @base_module.const_get(@base_class_name) kls.establish_connection kls end end |
Instance Method Details
#create(table_name, class_name = nil) ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/dynamic-active-model/factory.rb', line 14 def create(table_name, class_name = nil) class_name ||= generate_class_name(table_name) kls = Class.new(base_class) do self.table_name = table_name end @base_module.const_set(class_name, kls) @base_module.const_get(class_name) end |
#generate_class_name(table_name) ⇒ Object
rubocop:enable MethodLength
41 42 43 |
# File 'lib/dynamic-active-model/factory.rb', line 41 def generate_class_name(table_name) table_name.classify end |