2011-05-16 42 views
4

這可能是另一個問題,但我找不到它。如何將值設置爲Rails 3中的新列?

我是Rails的相對noobie。我正在嘗試向已經有數據的表添加新列。本專欄不允許使用空值。更新所有現有記錄以在此新列中具有價值的最簡單方法是什麼?我知道它可能在我的遷移中,但我不知道語法會是什麼。

def self.up 
    change_table :reminders do |t| 
    t.boolean :active 
    end 
    #model name is Reminder - how to update data with a value? 
end 

回答

7

你可以做的是添加列,更新所有表中的記錄與所需的值,然後將其更改爲不允許爲空。

def self.up 
    add_column :reminders, :active, :boolean, :default => true 
    Reminder.update_all("active = ?", true) 
    change_column :reminders, :active, :boolean, :default => true, :null => :false 
end 
+0

這似乎在我的開發副本上工作。雖然在Heroku上似乎失敗了。 – 2011-05-16 20:52:20

+0

Heroku上的一切都失敗了:) – Arcolye 2013-04-09 11:23:49

0

試試這個:

def self.up 
    change_table :reminders do |t| 
    t.boolean :active, :default => true #or your value 
    end 
#model name is Reminder - how to update data with a value? 
end 
相關問題