Module: DataMapper::AutoMigrations

Defined in:
lib/data_mapper/auto_migrations.rb

Instance Method Summary collapse

Instance Method Details

#auto_migrate!Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/data_mapper/auto_migrations.rb', line 3

def auto_migrate!
  if self::subclasses.empty?
    table = database.table(self)
    table.associations.each do |association|
      association.activate!
    end
    
    table.create!(true)
  else
    schema = database.schema
    columns = self::subclasses.inject(schema[self].columns) do |span, subclass|
      span + schema[subclass].columns
    end

    table_name = schema[self].name.to_s
    table = schema[table_name]
    columns.each do |column|
      table.add_column(column.name, column.type, column.options)
    end
    
    table.associations.each do |association|
      association.activate!
    end
    
    return table.create!(true)
  end
end