Активная запись ruby ​​on rails after_save не захватывает родительский объект

Я пытаюсь использовать обратный вызов after_save для объекта cartItems для обновления атрибута общей цены корзины в объекте cart (родительский элемент cartItems) . Но я получаю ошибку

undefined method cart_items on nil class

Я исследовал на Google, и код кажется правильным. Однако я не могу выполнить это. Ниже приведено содержимое модели cart и cart_items. Пожалуйста помоги!

cart.rb

class Cart < ActiveRecord::Base
  has_many :cart_items
  belongs_to :user
end

cart_item.rb

class CartItem < ActiveRecord::Base
 belongs_to :cart
 after_save :update_cart_total_and_tax_amount

 private
 def update_cart_total_and_tax_amount
  cartTotal=0
  applicableTax=0
  self.cart.cart_items.each do|cartItem|
    cartTotal = cartTotal + cartItem.inr_amount
  end
  cart.cart_total=cartTotal
  tax = Tax.find(1)
  totalTax = ( cartTotal * percentage_tax ) / 100
  if totalTax < tax.minimum_tax
    applicableTax=tax.minimum_tax
  else
    applicableTax = totalTax
  end
  cart.tax_amount = applicableTax
   cart.save
  end
 end

1 ответ

Вы не нуждаетесь в себе в линии

self.cart.cart_items.each do|cartItem|
Другие вопросы по тегам