我错误地将列命名为hased_password而不是hashed_password。
如何使用迁移重命名此列来更新数据库架构?
我错误地将列命名为hased_password而不是hashed_password。
如何使用迁移重命名此列来更新数据库架构?
当前回答
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-迁移或活动记录迁移。
其他回答
请参阅“活动记录迁移”文档中的“可用转换”部分。
rename_column(table_name, column_name, new_column_name):
重命名列,但保留类型和内容。
让我们接吻。它只需要三个简单的步骤。以下适用于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数据库:迁移
你要去参加比赛了!
我在使用PostgreSQL数据库开发Rails 6应用程序时遇到了这个挑战。
以下是我修复它的方法:
在我的例子中,table_name是“Products”,old_column是“SKU”,new_column则是“ProductNumber”。
创建包含用于重命名列的命令的迁移文件:rails生成迁移重命名KUToProductNumberInProducts打开db/migrate目录中的迁移文件:数据库/migrate/2021028082344_rename_sku_to_product_number_in_products.rb添加用于重命名列的命令:类RenameKuToProductNumberInProducts<ActiveRecord::迁移[6.0]def更改#重命名列:表名,:旧列,:新列重命名列:产品,:sku,:product_number终止终止保存,然后运行迁移命令:轨道数据库:移植
现在,您可以通过查看架构文件来确认列的重命名:
db/schema.rb
如果您对列的重命名不满意,可以始终回滚:
rails db:rollback
注意:在调用列名的所有位置,努力将列名修改为新名称。
rails g迁移migrationName
因此,您转到生成的迁移并添加:
rename_column :table, :old_column, :new_column
到方法
如果当前数据对您不重要,您可以使用以下方法删除原始迁移:
rake db:migrate:down VERSION='YOUR MIGRATION FILE VERSION HERE'
如果没有引号,请在原始迁移中进行更改,然后通过以下方式再次运行升级迁移:
rake db:migrate