title: Infinite loop in before_update callback
body: <p>I'm trying to update translations, but it becomes to infinite loop, because in <strong>perform</strong> method I repeat saving. How I can solve this problem? </p>
  
  <p><code>before_update :update_translations, on: :edit</code></p>
  
  <pre><code>  def update_translations
        id = self.id
        order = Order.find(id)
        locale = order.translations.find(order.translation.id).locale.to_s
        TranslateOrderFeedbackWorker.perform_async(id, locale)
    end
  </code></pre>
  
  <pre><code>def perform(id, current_locale)
      order = Order.find(id)
      I18n.locale = current_locale
      text = order.feedback
      translator = TranslateTextService.new
  
      I18n.available_locales.each do |locale|
        next if locale.to_s == current_locale
  
        I18n.locale = locale
        order.feedback = translator.translate(text, current_locale, locale.to_s)
      end
      order.save # &lt;= infinity loop here
    end
  </code></pre>