Rails 5 - как отрицать вызов метода в условном обратном вызове before_save

В моей модели шаблона у меня есть этот обратный вызов:

  before_save :set_status, if: :is_template?

  private

  def is_template?
    return self.template_type == 'template'
  end

Как я могу изменить его так, чтобы он срабатывал только тогда, когда template_type НЕ является 'template'?

Я попробовал это:

1 before_save :set_status, if: !:is_template?
2 before_save :set_status, if: !(:is_template?)

но они оба вызывают метод before_save ошибка не найдена.

Прочитав этот вопрос, я также попробовал это:

  before_save :set_status, if: Proc.new {|model| !model.is_template? }

Но это кажется излишним для такого простого случая.

Я действительно должен написать другой метод :is_not_template? чтобы это работало?

1 ответ

Решение

Пытаться before_save :set_status, unless: :is_template?;)

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