我错误地将列命名为hased_password而不是hashed_password。

如何使用迁移重命名此列来更新数据库架构?


当前回答

Rails 5迁移更改

eg:

rails g model学生Student_name:字符串年龄:整数

如果要将student_name列更改为name

注意:-如果没有运行railsdb:migrate

您可以执行以下步骤

rails d model学生Student_name:字符串年龄:整数

这将删除生成的迁移文件,现在您可以更正列名

rails g model学生姓名:string年龄:整数

如果已迁移(railsdb:migrate),请使用以下选项更改列名

rails g迁移RemoveStudentNameFromStudent student_name:字符串rails g迁移AddNameToStudent名称:字符串

其他回答

Rails 5迁移更改

eg:

rails g model学生Student_name:字符串年龄:整数

如果要将student_name列更改为name

注意:-如果没有运行railsdb:migrate

您可以执行以下步骤

rails d model学生Student_name:字符串年龄:整数

这将删除生成的迁移文件,现在您可以更正列名

rails g model学生姓名:string年龄:整数

如果已迁移(railsdb:migrate),请使用以下选项更改列名

rails g迁移RemoveStudentNameFromStudent student_name:字符串rails g迁移AddNameToStudent名称:字符串

运行rails g migration ChangesNameInUsers(或任何您想命名的名称)

打开刚刚生成的迁移文件,并在方法中添加此行(在def change和end之间):

重命名列:表名,:名称you_want_to_change,:新名称

保存文件,并在控制台中运行rakedb:migrate

检查你的schema.db,看看数据库中的名称是否真的改变了!

希望这有帮助:)

对于Ruby on Rails 4:

def change
    rename_column :table_name, :column_name_old, :column_name_new
end

从API:

rename_column(table_name, column_name, new_column_name)

这将重命名列,但保持类型和内容不变。

在我看来,在这种情况下,最好使用rakedb:rollback,然后编辑迁移并再次运行rakedb:migrate。

但是,如果列中有不希望丢失的数据,请使用rename_column。