Уровень стека слишком глубокий, может быть рекурсивный, но не уверенный

Я получаю Stack Level too deep ошибка, и я думаю, что это связано со следующим кодом, но я не уверен, как это исправить:

   after_save :update_milestone

   def update_milestone
      if order % 50 == 0
         self.update_attributes(is_milestone: true)
      else
         self.update_attributes(is_milestone: false)
      end
   end

Какие-нибудь мысли

1 ответ

Решение

Вы вызываете update_attributes, который попадает в проверки. Это тогда вызывает обратный вызов after_save, который вызывает ошибки.

Ты хочешь:

self.update_column(:is_milestone, value)

Это не вызовет проверки.

Другие вопросы по тегам