class AddExperimentLevel < ActiveRecord::Migration[4.2] def up # Create experiments table create_table :experiments do |t| t.string :name, null: false t.text :description t.integer :project_id, null: false t.integer :created_by_id, null: false t.integer :last_modified_by_id, null: false t.boolean :archived, null: false, default: false t.integer :archived_by_id t.datetime :archived_on t.integer :restored_by_id t.datetime :restored_on t.timestamps null: false end add_foreign_key :experiments, :users, column: :created_by_id add_foreign_key :experiments, :users, column: :last_modified_by_id add_foreign_key :experiments, :users, column: :archived_by_id add_foreign_key :experiments, :users, column: :restored_by_id add_index :experiments, :name add_index :experiments, :project_id add_index :experiments, :created_by_id add_index :experiments, :last_modified_by_id add_index :experiments, :archived_by_id add_index :experiments, :restored_by_id add_column :my_modules, :experiment_id, :integer, default: 0 add_column :my_module_groups, :experiment_id, :integer, default: 0 change_column_null :my_modules, :experiment_id, false remove_column :my_modules, :project_id add_foreign_key :my_modules, :experiments, column: :experiment_id add_index :my_modules, :experiment_id change_column_null :my_module_groups, :experiment_id, false remove_column :my_module_groups, :project_id add_foreign_key :my_module_groups, :experiments, column: :experiment_id add_index :my_module_groups, :experiment_id end def down add_column :my_modules, :project_id, :integer, default: 0 add_column :my_module_groups, :project_id, :integer, default: 0 change_column_null :my_modules, :project_id, false remove_index :my_modules, column: :experiment_id remove_foreign_key :my_modules, column: :experiment_id remove_column :my_modules, :experiment_id change_column_null :my_module_groups, :project_id, false remove_index :my_module_groups, column: :experiment_id remove_foreign_key :my_module_groups, column: :experiment_id remove_column :my_module_groups, :experiment_id # Drop experiments table remove_index :experiments, column: :name remove_index :experiments, column: :project_id remove_index :experiments, column: :created_by_id remove_index :experiments, column: :last_modified_by_id remove_index :experiments, column: :archived_by_id remove_index :experiments, column: :restored_by_id remove_foreign_key :experiments, column: :created_by_id remove_foreign_key :experiments, column: :last_modified_by_id remove_foreign_key :experiments, column: :archived_by_id remove_foreign_key :experiments, column: :restored_by_id drop_table :experiments end end