ActiveRecord更改列默认值(不工作)

时间:2016-01-14 17:25:10

标签: ruby-on-rails activerecord rails-migrations

我的数据库中有一个companies表,其中有两列(sizestate)我希望将默认值添加到。目前没有默认值,列未设置为null: false。我已尝试使用docs中概述的update_columnupdate_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

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

您的迁移只会更改新创建记录的默认值。我会写一个rake任务来更新DB中的现有值。使用像

这样的东西
Companies.where(state: "").map{|c| c.update_attribute(state: "ma")