Почему это бесконечный цикл? ActiveRecord - PullRequest
0 голосов
/ 11 июня 2010
class Account < ActiveRecord::Base
  after_update :give_user_credit, :on => :update 

  def give_user_credit
    credit = User.current_user.credit + 3.8
    User.current_user.update_attribute(:credit, credit)
  end
end

Когда я использую это, сервер зависает, и когда я возвращаюсь к приложению после полной перезагрузки, мой кредит составляет £ 1000.

Что здесь происходит ..

Спасибо: D

Ответы [ 2 ]

6 голосов
/ 11 июня 2010

Похоже, вы устанавливаете :give_user_credit callback для запуска каждый раз, когда обновляется запись.

Но поскольку обратный вызов обновляет запись, он снова запускает обратный вызов, который будет продолжаться ина ...

1 голос
/ 18 июня 2010

Вы также можете использовать этот приватный метод:

model.credit = 10
model.send(:update_without_callbacks)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...