我刚刚向Heroku部署了一个提交,它在我的portfolio
表中添加了photos
字段。我已就此设置了default => true
。这是我的schema.rb的缩写:
create_table "photos", :force => true do |t|
t.string "name"
t.string "description"
t.integer "user_id"
t.datetime "created_at"
t.datetime "updated_at"
t.boolean "portfolio", :default => true
end
这在开发中运行良好,并将所有当前照片更改为portfolio
的默认值为true。所以我将更新部署到Heroku,运行heroku rake db:migrate
和heroku restart
。它迁移得很好,但所有图片都以NULL
作为portfolio
的默认值。有谁知道如何让Heroku在数据库中更改此默认值?谢谢。
答案 0 :(得分:0)
我通过将Photo.update_all ["portfolio = ?", true]
添加到我的迁移并重新迁移来修复此问题。
答案 1 :(得分:0)
使用该迁移,您只在该列上设置新的默认值,并且该默认值仅适用于新行,而不是已存在的值为NULL的预先存在的行。
与您说的一样,您需要在迁移过程中追溯性地将默认设置为旧记录:
Photo.update_all :portfolio => true