Активная запись 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|