我的数据库中有一个companies
表,其中有两列(size
和state
)我希望将默认值添加到。目前没有默认值,列未设置为null: false
。我已尝试使用docs中概述的update_column
和update_column_default
方法,但似乎都没有做任何事情。我可以运行迁移,但表格没有变化。
我已经尝试了update_column
:
class AddDefaultValuesToCompanies < ActiveRecord::Migration
def change
def up
change_column :companies, :state, :string, default: 'MA'
change_column :companies, :size, :string, default: '1-10'
end
def down
change_column :companies, :state, :string, default: nil
change_column :companies, :size, :string, default: nil
end
end
end
我也尝试过像这样使用update_column_default
:
class AddDefaultValuesToCompanies < ActiveRecord::Migration
def change
def up
change_column_default(:companies, :state, 'MA')
change_column_default(:companies, :size, '1-10')
end
def down
change_column_default(:companies, :state, nil)
change_column_default(:companies, :size, nil)
end
end
end
我在这里缺少什么?
答案 0 :(得分:0)
您的迁移只会更改新创建记录的默认值。我会写一个rake任务来更新DB中的现有值。使用像
这样的东西Companies.where(state: "").map{|c| c.update_attribute(state: "ma")