是否可以使用如下命令重命名列:
script/generate migration AddColumnToTable column:type
?感谢。
答案 0 :(得分:17)
Rails在名为rename_column
的ActiveRecord ConnectionAdapter上有一个迁移命令。您可以生成迁移,然后自己编写代码。例子(MySQL):
script/generate migration rename_my_column_by_hand
然后编辑它创建的文件:
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
它执行SQL,如:
ALTER TABLE my_table CHANGE old_name new_name BIGINT;
注意这只会重命名该列,它不会重命名您在其他表上使用的任何引用。
答案 1 :(得分:2)
好问题。不幸的是,答案是否定的。请参阅Rails 2.3.5源代码:
lib/rails_generator/generators/components/migration/migration_generator.rb
迁移生成器识别的唯一关键字是add
,remove
和to
/ from
。
答案 2 :(得分:1)
我在这里使用了一些技巧。假设我想将列foo更改为bar。
使用以下步骤创建迁移
这非常脆弱。如果一步失败,您可能会丢失数据..