Rails 5 - 如何在 before_save 回调条件下否定方法调用

Rails 5 - how to negate a method call on a before_save callback conditional

在我的模板模型中我有这个回调:

  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?)

但它们都会导致 'method before_save not found' 错误。

阅读了this question,我也尝试了这个:

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

但对于这样一个简单的案例来说,这似乎有点过分了。

我真的必须编写另一个方法 :is_not_template? 才能工作吗?

尝试 before_save :set_status, unless: :is_template? ;)