让我解释一下:
我跟着M. Hartl tutorial跟我一样喜欢迁移。所以现在,我的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
答案 0 :(得分:1)
是的,有可能。一个直截了当的策略可能是:
删除并重新创建数据库:
rake db:drop db:create
将所有迁移合并到一个文件中,就像您已经显示
执行命令
rake db:migrate
恢复数据库备份
但是,如果已经在生产中部署了应用程序,这可能会变得棘手。