DYZ.Life

【功能】Rails中如何一次修改数据库中的多个字段

创建新的migration文件:
‘rails g migration FixColumnName’
文件名不会被ActiveRecord辨识,只是给自己识别文件用途

旧版本Rails的写法:

1
2
3
4
5
6
7
8
9
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之后的写法:

1
2
3
4
5
class FixColumnName < ActiveRecord::Migration
def change
rename_column :table_name, :old_column, :new_column
end
end

多字段写法(重复rename部分):

1
2
3
rename_column :table_name, :old_column1, :new_column1
rename_column :table_name, :old_column2, :new_column2
...

不用重复写table_name那么多次简写方法:

1
2
3
4
5
6
7
8
9
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

改了以后不要忘记runrake db:migrate。如果migration出现问题,且数据库可以充值(没有需要保存的东西),可以试试run rake db:reset然后再migrate。

参考:Stackoverflow原文答案

热评文章