如何在Rails控制台中重命名列而不使用迁移?

18
我想在Rails控制台中重命名表格列,而不编写任何迁移。我该如何做?

4
如果没有迁移,你不应该这样做,这不是最佳实践,也不符合 Rails 的方式。 - Gopal S Rathore
1
我知道这是一个非常讨厌的数据库不同步问题... - Boti
3个回答

45

我选择从控制台运行这个:

ActiveRecord::Base.connection.rename_column :tablename, :old_column_name, :new_column_name

3
最佳答案。它让你能够像在Rails迁移中一样执行命令。 - aaron-coding

13
rails dbconsole
ALTER TABLE name RENAME column TO column

1
只是一个小提示 @Boti,使用这种方法不会更新你的 db/schema.rb 文件,这可能会在你部署时引起问题。如果有这样的担忧,你可以在执行此操作后运行 rake db:schema:dump,以便将模式文件与当前数据库结构(和命名)同步。 - Paul Richter
OP 询问的是 rails console,而不是 db console。它们是不同的控制台。 - goodniceweb

-1
你在控制台运行:`rails g migration ChangeColName`
你编辑文件 `db/migrate/"timestamp"_change_col_name.rb`,在 `def change` 中插入以下内容:
```ruby rename_column :tablename, :old_column_name, :new_column_name ```
保存后,
你在控制台运行:`rake db:migrate` :-)

1
我不确定你是否将“console”与“terminal”混淆了,但OP的意思是如何在实际的Rails控制台(即IRB界面)中完成此操作,而无需编写/运行迁移文件。 - Paul Richter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接