как пропустить фильтр before_save в Rails для конкретной команды - PullRequest
2 голосов
/ 01 апреля 2010

У меня before_save определено следующим образом:

  def before_save
    self.token = generate_token
  end

Я хочу пропустить это для определенных вызовов метода сохранения. так что в моем коде я хотел бы сделать

@user.save

без вызова фильтра before_save. Могу я это сделать?

Ответы [ 2 ]

8 голосов
/ 01 апреля 2010

Вы можете сделать:

 @user.send(:update_without_callbacks)

Или create_without_callbacks также работает. Я использовал оба, но я не знаю, есть ли «save_without_callbacks» В любом случае, используйте экономно.

0 голосов
/ 02 апреля 2010

Вы также можете включить условную логику в свой метод для обработки случаев, когда вы не хотите, чтобы обратный вызов срабатывал.

def before_save
  self.token = generate_token if token.blank?
end

Не очень хороший пример, но вы поняли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...