2012-02-07 109 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]添加到我的遷移和重新遷移中解決了此問題。