После сохранения обратный вызов не обновляется

#ruby-on-rails

#ruby-on-rails

Вопрос:

Я пытаюсь установить обратный вызов для моей модели продукта, но атрибут продукта discounted_price не меняется…

Я не могу вызвать self.save , это вызывает stack level too deep

Что я делаю не так?

product.rb

 after_save :set_discount

def set_discount
  self.discounted_price = self.price - (self.price * self.discount_percentage / 100)
end
  

Ответ №1:

Вероятно, вам нужен before_save обратный вызов, потому что after_save происходит — как следует из названия, после завершения сохранения

Комментарии:

1. о, хорошо, я действительно думал, что здесь было необходимо after_save, спасибо

Ответ №2:

Вам нужно изменить значение перед сохранением в BD!

 before_save :set_discount

def set_discount
  self.discounted_price = price - (price * discount_percentage / 100)
end
  

Кроме того, самостоятельно не обязательно использовать после =

Комментарии:

1. спасибо за информацию о self not necessary use after =