Class: DynamicActiveModel::Associations
- Inherits:
-
Object
- Object
- DynamicActiveModel::Associations
- Defined in:
- lib/dynamic-active-model/associations.rb
Overview
DynamicActiveModel::Associations iterates over the models of a
database and adds has_many and belongs_to based on foreign keys
Instance Attribute Summary collapse
-
#database ⇒ Object
readonly
Returns the value of attribute database.
Instance Method Summary collapse
- #add_foreign_key(table_name, foreign_key, relationship_name = nil) ⇒ Object
-
#build! ⇒ Object
iterates over the models and adds relationships.
-
#initialize(database) ⇒ Associations
constructor
A new instance of Associations.
Constructor Details
#initialize(database) ⇒ Associations
Returns a new instance of Associations.
9 10 11 12 13 14 |
# File 'lib/dynamic-active-model/associations.rb', line 9 def initialize(database) @database = database @foreign_keys = database.models.each_with_object({}) do |model, hsh| hsh[model.table_name] = ForeignKey.new(model) end end |
Instance Attribute Details
#database ⇒ Object (readonly)
Returns the value of attribute database.
7 8 9 |
# File 'lib/dynamic-active-model/associations.rb', line 7 def database @database end |
Instance Method Details
#add_foreign_key(table_name, foreign_key, relationship_name = nil) ⇒ Object
16 17 18 |
# File 'lib/dynamic-active-model/associations.rb', line 16 def add_foreign_key(table_name, foreign_key, relationship_name = nil) @foreign_keys[table_name].add(foreign_key, relationship_name) end |
#build! ⇒ Object
iterates over the models and adds relationships
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/dynamic-active-model/associations.rb', line 21 def build! foreign_key_to_models = create_foreign_key_to_model_map @database.models.each do |model| model.column_names.each do |column_name| next unless foreign_key_to_models[column_name.downcase] foreign_key_to_models[column_name.downcase].each do |foreign_model, relationship_name| next if foreign_model == model add_relationships(relationship_name, model, foreign_model, column_name) end end end end |