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?
;)
在我的模板模型中我有这个回调:
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?
;)