我必须重命名表a
列的一列并更改它的数据类型。我目前正在做以下事情:
class RenameIdFromA < ActiveRecord::Migration
def change
rename_column :a, :a_id, :id
change_column :a, :id, :string, :limit => 50
end
end
有没有办法一气呵成?
之类的东西 rename_and_change_column :a, :a_id, :id, :string, :limit => 50
因为,可以通过以下查询一次性在MySQL
中完成:
ALTER TABLE `a` CHANGE `a_id` `id` varchar(50) DEFAULT 0 NOT NULL
答案 0 :(得分:1)
您可以使用execute
按原样运行SQL,然后如果有人使用的是您支持的数据库引擎,则可以回退到默认方法。
class RenameIdFromA < ActiveRecord::Migration
def change
if ActiveRecord::Base.connection.adapter_name =~ /mysql/i
execute "ALTER TABLE `a` CHANGE `a_id` `id` varchar(50) DEFAULT 0 NOT NULL"
else
rename_column :a, :a_id, :id
change_column :a, :id, :string, :limit => 50
end
end
end