Heroku和默认数据库设置

时间:2012-02-07 02:50:13

标签: heroku migration

我刚刚向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:migrateheroku restart。它迁移得很好,但所有图片都以NULL作为portfolio的默认值。有谁知道如何让Heroku在数据库中更改此默认值?谢谢。

2 个答案:

答案 0 :(得分:0)

我通过将Photo.update_all ["portfolio = ?", true]添加到我的迁移并重新迁移来修复此问题。

答案 1 :(得分:0)

使用该迁移,您只在该列上设置新的默认值,并且该默认值仅适用于新行,而不是已存在的值为NULL的预先存在的行。

与您说的一样,您需要在迁移过程中追溯性地将默认设置为旧记录:

Photo.update_all :portfolio => true