0

让我解释 :

我遵循了M. Hartl 教程,并且我和他一样进行了迁移。所以现在,我的 db/migrate 目录中有以下文件(我省去了时间戳):

create_users.rb

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name
      t.string :email

      t.timestamps
    end
  end
end

add_index_to_users_email.rb

class AddIndexToUsersEmail < ActiveRecord::Migration
  def change
    add_index :users, :email, unique: true
  end
end

add_password_digest_to_users.rb

class AddPasswordDigestToUsers < ActiveRecord::Migration
  def change
    add_column :users, :password_digest, :string
  end
end

add_remember_token_to_users.rb

class AddRememberTokenToUsers < ActiveRecord::Migration
  def change
    add_column :users, :remember_token, :string
    add_index :users, :remember_token
  end
end

add_admin_to_users.rb

class AddAdminToUsers < ActiveRecord::Migration
  def change
    add_column :users, :admin, :boolean, default: false
  end
end

是否可以将所有内容混合到create_users.rb中,如下所示,并删除其他迁移文件而不损坏我的应用程序?

create_users.rb

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name
      t.string :email
      t.string :password_digest
      t.string :remember_token
      t.boolean :admin, default: false

      t.timestamps
    end
    add_index :users, :email, unique: true
    add_index :users, :remember_token
  end
end
4

1 回答 1

1

是的,有可能。一个直截了当的策略可能是:

  1. 为了避免数据丢失,使数据库哑(创建数据库备份)
  2. 删除并重新创建数据库:

    rake db:drop db:create
    
  3. 像您展示的那样将所有迁移合并到一个文件中

  4. 跑:

    rake db:migrate
    
  5. 恢复数据库备份

但是,如果您已经将应用程序部署在生产环境中,这可能会变得很棘手。

于 2013-05-23T09:43:22.320 回答