gpt4 book ai didi

ruby-on-rails - 如何在 Ruby on Rails 迁移中重命名数据库列?

转载 作者:行者123 更新时间:2023-12-03 03:51:25 25 4
gpt4 key购买 nike

我错误地将列命名为 hased_pa​​ssword 而不是 hashed_pa​​ssword

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

最佳答案

rename_column :table, :old_column, :new_column

您可能需要创建一个单独的迁移来执行此操作。 (根据您的意愿重命名 FixColumnName。):

bin/rails generate migration FixColumnName
# creates db/migrate/xxxxxxxxxx_fix_column_name.rb

然后编辑迁移以执行您的意愿:

# db/migrate/xxxxxxxxxx_fix_column_name.rb
class FixColumnName < ActiveRecord::Migration
def self.up
rename_column :table_name, :old_column, :new_column
end

def self.down
# rename back if you need or do something else or do nothing
end
end
<小时/>

对于 Rails 3.1 使用:

虽然 updown 方法仍然适用,但 Rails 3.1 收到了一个 change 方法,该方法“知道如何迁移数据库并反向”迁移回滚时执行,无需编写单独的 down 方法”。

请参阅“Active Record Migrations”了解更多信息。

rails g migration FixColumnName

class FixColumnName < ActiveRecord::Migration
def change
rename_column :table_name, :old_column, :new_column
end
end

如果您碰巧有一大堆列需要重命名,或者需要一遍又一遍地重复表名称:

rename_column :table_name, :old_column1, :new_column1
rename_column :table_name, :old_column2, :new_column2
...

您可以使用 change_table 让事情变得更整洁:

class FixColumnNames < ActiveRecord::Migration
def change
change_table :table_name do |t|
t.rename :old_column1, :new_column1
t.rename :old_column2, :new_column2
...
end
end
end

然后像往常一样db:migrate或者按照您的方式进行业务即可。

<小时/>

对于 Rails 4:

在创建用于重命名列的 Migration 时,Rails 4 会生成 change 方法,而不是 updown > 如上一节所述。生成的change方法是:

$ > rails g migration ChangeColumnName

这将创建一个类似于以下内容的迁移文件:

class ChangeColumnName < ActiveRecord::Migration
def change
rename_column :table_name, :old_column, :new_column
end
end

关于ruby-on-rails - 如何在 Ruby on Rails 迁移中重命名数据库列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1992019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com