2016-05-15 19 views
0

私はこのプライベートメソッドでupdate_attributesを試行していますが、アソシエーションのためにcart.update_attributesを呼び出すことができましたが、何らかの理由で未定義のメソッドを返しています。誰かが私が間違っていることを教えてください。未定義のメソッド 'update_attributes' for nil: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

カートのオブジェクトはnilです。 – Rog

+0

@Rogええ、しかし、関連のために、そうすべきではありません。右? –

+0

必ずしもそうではありません。あなたが関連付けをしているということは、それが存在することを意味するものではないということだけが存在することを意味します。あなたがカートを望むなら、最初にカートを作成する必要があります。 – Rog

答えて

0

あなたcart関連付けは必ずしもあなたのコード内で定義されていないので、cart_idがnilであるか、または有効なカートを参照していない場合にはnilを返します。おそらく存在確認が必要です。カード属性が存在しない場合は更新しないでください。

after_create :mark_cart_as_purchased, if: -> { cart.present? } 
関連する問題