2016-05-15 41 views
0

我試圖update_attributes與這個私人的方法,由於該協會,我想我可以打電話cart.update_attributes但由於某種原因,它返回一個未定義的方法。有人請告訴我我做錯了什麼。未定義的方法'update_attributes'爲零:NilClass

在此先感謝!

class PaymentNotification < ActiveRecord::Base 
    belongs_to :cart 
    serialize :params 
    after_create :mark_cart_as_purchased 


private 

    def mark_cart_as_purchased 
    if status == "Completed" 
     cart.update_attribute(:purchased_at, Time.now) 
    end 
    end 
end 
+0

您的購物車對象爲零。 – Rog

+0

@羅格是的,但由於這個聯繫,它不應該是。對? –

+0

不一定。僅僅因爲你有一個關聯並不意味着它存在,它只意味着它可以存在。如果你需要購物車,你需要先創建一個購物車。 – Rog

回答

0

cart關聯不一定在你的代碼中定義的,所以它會返回nil如果cart_id爲零或不引用有效的車。您應該爲其添加一個存在驗證,或者防止更新卡屬性(如果它不存在):

after_create :mark_cart_as_purchased, if: -> { cart.present? } 
相關問題