Class: DynamicActiveModel::Database

Inherits:
Object
  • Object
show all
Defined in:
lib/dynamic-active-model/database.rb

Overview

DynamicActiveModel::Database iterates over the tables of a database and create ActiveRecord models

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base_module, connection_options, base_class_name = nil) ⇒ Database

Returns a new instance of Database.



11
12
13
14
15
16
17
# File 'lib/dynamic-active-model/database.rb', line 11

def initialize(base_module, connection_options, base_class_name = nil)
  @factory = Factory.new(base_module, connection_options, base_class_name)
  @table_class_names = {}
  @skip_tables = []
  @skip_table_matchers = []
  @models = []
end

Instance Attribute Details

#factory ⇒ Object (readonly)

Returns the value of attribute factory.



7
8
9
# File 'lib/dynamic-active-model/database.rb', line 7

def factory
  @factory
end

#models ⇒ Object (readonly)

Returns the value of attribute models.



7
8
9
# File 'lib/dynamic-active-model/database.rb', line 7

def models
  @models
end

#table_class_names ⇒ Object (readonly)

Returns the value of attribute table_class_names.



7
8
9
# File 'lib/dynamic-active-model/database.rb', line 7

def table_class_names
  @table_class_names
end

Instance Method Details

#create_models! ⇒ Object



31
32
33
34
35
36
37
# File 'lib/dynamic-active-model/database.rb', line 31

def create_models!
  @factory.base_class.connection.tables.each do |table_name|
    next if skip_table?(table_name)

    @models << @factory.create(table_name, @table_class_names[table_name])
  end
end

#skip_table(table) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/dynamic-active-model/database.rb', line 19

def skip_table(table)
  if table.is_a?(Regexp)
    @skip_table_matchers << table
  else
    @skip_tables << table.to_s
  end
end

#skip_tables ⇒ Object



39
40
41
# File 'lib/dynamic-active-model/database.rb', line 39

def skip_tables
  @skip_tables + @skip_table_matchers
end

#table_class_name(table_name, class_name) ⇒ Object



27
28
29
# File 'lib/dynamic-active-model/database.rb', line 27

def table_class_name(table_name, class_name)
  @table_class_names[table_name.to_s] = class_name
end