2017-07-03 44 views
1

我用導軌4 PostgreSQL的 我想用默認值導軌和添加默認值列沒有影響到當前的條目

add_column :users, :first_visit, :boolean, :default => true 

添加新列,並與價值真實的,但需要創建的所有新項目使所有當前條目不受默認值影響,但在first_visit字段上具有零值。

+0

默認值表示它將爲所有條目設置。我不認爲這是可能的。 –

回答

2

:default => true遷移添加true爲所有現有的記錄。

如果你想nil現有記錄和true默認值,然後從遷移刪除:default => true,並添加以下代碼在用戶模式:

class User < ActiveRecord::Base 
    before_create :set_default 

    def set_default 
     self.first_visit = true unless self.first_visit 
    end 
    end 
0

我相信,只有這樣才能達到這種純內的數據庫是使用您引用的命令在PostgreSQL中設置默認值,然後運行全局更新以將所有當前值設置爲空。

User.update_all(first_visit: nil)