我错误地将列命名为hased_password而不是hashed_password。
如何使用迁移重命名此列来更新数据库架构?
我错误地将列命名为hased_password而不是hashed_password。
如何使用迁移重命名此列来更新数据库架构?
当前回答
让我们接吻。它只需要三个简单的步骤。以下适用于Rails 5.2。
1.创建迁移
rails g迁移重命名为FullNameInStudentsrails g RenameOldFieldToNewFieldInTableName-这样以后代码库的维护人员就非常清楚了(表名使用复数)。
2.编辑迁移
#我更喜欢显式地编写panddown方法。
# ./数据库/migrate/20190114045137_rename_name_to_full_name_in_students.rb
class RenameNameToFullNameInStudents < ActiveRecord::Migration[5.2]
def up
# rename_column :table_name, :old_column, :new_column
rename_column :students, :name, :full_name
end
def down
# Note that the columns are reversed
rename_column :students, :full_name, :name
end
end
3.运行迁移
rake数据库:迁移
你要去参加比赛了!
其他回答
def change
rename_column :table_name, :old_column_name, :new_column_name
end
我们可以手动使用以下方法:
我们可以手动编辑迁移,如:
打开app/db/migrate/xxxxx_migration_file.rb将hased_password更新为hashed_passwords运行以下命令$>rakedb:migrate:down VERSION=xxxxxxxxx
然后它将删除您的迁移:
$> rake db:migrate:up VERSION=xxxxxxxxx
它将使用更新的更改添加您的迁移。
如果需要切换列名,则需要创建占位符以避免出现“重复列名”错误。下面是一个示例:
class SwitchColumns < ActiveRecord::Migration
def change
rename_column :column_name, :x, :holder
rename_column :column_name, :y, :x
rename_column :column_name, :holder, :y
end
end
运行rails g migration ChangesNameInUsers(或任何您想命名的名称)
打开刚刚生成的迁移文件,并在方法中添加此行(在def change和end之间):
重命名列:表名,:名称you_want_to_change,:新名称
保存文件,并在控制台中运行rakedb:migrate
检查你的schema.db,看看数据库中的名称是否真的改变了!
希望这有帮助:)
您可以编写迁移,运行以下命令以更新列名:
rename_column :your_table_name, :hased_password, :hashed_password
此外,确保用新列名更新代码中旧列名的任何用法。