#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 =