【发布时间】:2016-01-14 17:25:10
【问题描述】:
我的数据库中有一个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
我在这里错过了什么?
【问题讨论】:
-
您的迁移将更改列默认值,但不会更新现有数据...
-
我认为在
change块周围包裹down或up块在语法上是不合适的。我不知道这是否至少是您的问题的部分原因。运行rake db:migrate时输出什么? -
哇,真不敢相信我错过了。这是我运行
rails g migration时的更改块。完全忘记删除它。
标签: ruby-on-rails activerecord rails-migrations