2012-02-07 105 views
0

我刚刚部署了一个提交给Heroku,它将portfolio字段添加到我的photos表中。我已对此设置default => true。这里是一个简短的看看我schema.rb:Heroku和默认数据库设置

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的默认值。所以我将更新部署到Heroku,运行heroku rake db:migrateheroku restart。它迁移得很好,但所有图像都有NULL作为portfolio的默认值。有谁知道如何让Heroku在数据库中更改默认值?谢谢。

回答

0

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

像你说的,你需要回顾设置默认为较旧的记录作为迁移的一部分:

Photo.update_all :portfolio => true 
0

我通过将Photo.update_all ["portfolio = ?", true]添加到我的迁移和重新迁移中解决了此问题。