在Rails中重命名列

Vic*_*tor 9 ruby-on-rails

是否可以使用如下命令重命名列:

script/generate migration AddColumnToTable column:type
Run Code Online (Sandbox Code Playgroud)

?谢谢.

sco*_*ttd 17

Rails确实在被调用的ActiveRecord ConnectionAdapter上有一个迁移命令rename_column.您可以生成迁移,然后自己编写代码.示例(MySQL):

script/generate migration rename_my_column_by_hand
Run Code Online (Sandbox Code Playgroud)

然后编辑它创建的文件:

class RenameMyColumnByHand < ActiveRecord::Migration
  def self.up
    rename_column :my_table, :old_name, :new_name
  end

  def self.down
    rename_column :my_table, :new_name, :old_name
  end
end
Run Code Online (Sandbox Code Playgroud)

它执行SQL,如:

ALTER TABLE my_table CHANGE old_name new_name BIGINT;
Run Code Online (Sandbox Code Playgroud)

注意这仅重命名列,它不会重命名您在其他表上的任何引用.