2011-10-17 36 views
3

我有一個數據庫視圖和一個我用來支持Rails模型的計算列。由model.create生成的INSERT INTO語句會嘗試將該列設置爲null,這會導致數據庫發生抱怨,並且不會創建記錄。我知道:attr_readonly可以用來讓列不在UPDATE中指定,但有沒有辦法告訴ActiveRecord它不應該爲INSERT指定它?爲活動記錄INSERT防止NULL?

回答

2

您可能會: 在創建對象之前手動從對象中刪除該屬性。

before_create(:remove_attribute) 

    private 

    def remove_attribute 
    @attributes.delete('unwanted_attribute') 
    end 

當心這消除從當前 對象完全的屬性。如果您在 創建記錄後需要訪問已刪除的屬性,則需要重新加載記錄。