我错误地将列命名为hased_password而不是hashed_password。
如何使用迁移重命名此列来更新数据库架构?
我错误地将列命名为hased_password而不是hashed_password。
如何使用迁移重命名此列来更新数据库架构?
当前回答
def change
rename_column :table_name, :old_column_name, :new_column_name
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
RubyonRails的某些版本支持向上/向下迁移方法,如果您的迁移中有向上/下方法,那么:
def up
rename_column :table_name, :column_old_name, :column_new_name
end
def down
rename_column :table_name, :column_new_name, :column_old_name
end
如果您在迁移中使用了更改方法,那么:
def change
rename_column :table_name, :column_old_name, :column_new_name
end
有关更多信息,请参阅:RubyonRails-迁移或活动记录迁移。
rails g迁移migrationName
因此,您转到生成的迁移并添加:
rename_column :table, :old_column, :new_column
到方法
从API:
rename_column(table_name, column_name, new_column_name)
这将重命名列,但保持类型和内容不变。
若您的代码并没有和其他代码共享,那个么最好的选择就是只执行rakedb:rollback然后在migration和rakedb:migrate中编辑列名。就是这样
您可以编写另一个迁移来重命名列
def change
rename_column :table_name, :old_name, :new_name
end
就是这样。