我错误地将列命名为hased_password而不是hashed_password。
如何使用迁移重命名此列来更新数据库架构?
我错误地将列命名为hased_password而不是hashed_password。
如何使用迁移重命名此列来更新数据库架构?
当前回答
请参阅“活动记录迁移”文档中的“可用转换”部分。
rename_column(table_name, column_name, new_column_name):
重命名列,但保留类型和内容。
其他回答
首先你需要跑步
rails g migration create_new_column_in_tablename new_column:datatype
rails g migration remove_column_in_tablename old_column:datatype
然后需要检查db/migration您可以检查nem迁移中的详细信息,如果所有详细信息都正确,则需要运行:
rails db:migrate
从API:
rename_column(table_name, column_name, new_column_name)
这将重命名列,但保持类型和内容不变。
create_table的近亲是change_table,用于更改现有表。它以与create_table类似的方式使用,但向块提供的对象知道更多技巧。例如:
class ChangeBadColumnNames < ActiveRecord::Migration
def change
change_table :your_table_name do |t|
t.rename :old_column_name, :new_column_name
end
end
end
如果我们将其与其他alter方法一起使用,例如:remove/add index/remove index/add column,则这种方法更有效。我们可以做以下事情:
重命名
t.rename :old_column_name, :new_column_name
添加列
t.string :new_column
删除列
t.remove :removing_column
索引列
t.index :indexing_column
rails g迁移migrationName
因此,您转到生成的迁移并添加:
rename_column :table, :old_column, :new_column
到方法
您有两种方法可以做到这一点:
在这种类型中,当回滚时,它会自动运行与其相反的代码。def更改重命名列:表名称,:旧列名称,:新列名称终止对于这种类型,它在rakedb:migrate时运行up方法,在rakedb:rollback时运行down方法:定义self.up重命名列:表名称,:旧列名称,:新列名称终止定义自己向下重命名列:表名称,:新列名称,:旧列名称终止