2012-03-22 66 views
1

我的表格填寫了學生的詳細信息,它將值添加到名爲'學生'的表中。activerecord:數據庫默認值不生效

在該表中,我有一個名爲'ctime'的列,它具有數據庫默認值。

柱結構

的ctime |沒有時區的時間戳| ()

所以,當添加一個新學生時,我沒有給表單中的ctime列賦值,但是它導致錯誤「PG :: Error:ERROR:列中的空值」ctime 「違反非空約束」。

我的問題是,爲什麼它會導致錯誤,即使它在數據庫中有默認值?

請幫助我。

在此先感謝。

回答

0

如果您已經在表模式中定義了一個具有靜態默認值的列,那麼在實例創建後,AR實例中的相應屬性將自動具有該值。檢查您是否正確分配默認值。

您可以在遷移列設置默認選項,或者您可以使用一個回調,before_save

class Model < ActiveRecord::Base 
    before_save :default_values 
    def default_values 
    self.status ||= 'value' 
    end 
end 

或者你甚至可以使用after_initialize方法設置的默認值。