我错误地将列命名为hased_password而不是hashed_password。
如何使用迁移重命名此列来更新数据库架构?
我错误地将列命名为hased_password而不是hashed_password。
如何使用迁移重命名此列来更新数据库架构?
当前回答
在控制台中:
rails generate migration newMigration
在newMigration文件中:
class FixColumnName < ActiveRecord::Migration
def change
rename_column :table_name, :old_column, :new_column
end
end
其他回答
请参阅“活动记录迁移”文档中的“可用转换”部分。
rename_column(table_name, column_name, new_column_name):
重命名列,但保留类型和内容。
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 ChangeHasedPasswordToHashedPassword
然后在db/migrate文件夹中生成的文件中,按如下方式写入rename_column:
class ChangeOldColumnToNewColumn < ActiveRecord::Migration
def change
rename_column :table_name, :hased_password, :hashed_password
end
end
如果需要切换列名,则需要创建占位符以避免出现“重复列名”错误。下面是一个示例:
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 rename_hased_password
之后,编辑迁移并在更改方法中添加以下行:
rename_column :table, :hased_password, :hashed_password
这应该会奏效。