我正在使用Rails 3.2.19,在回调中使用多个if
作为条件时遇到问题。
以下混合双条件有效(评估first_condtion和second_condition)after_save :after_save_method, unless: :first_condition?, if: :second_condition?
但是,如果我使用两个if
条件,则after_save_method每次都会执行。 (似乎只采取了最后的条件)after_save :after_save_method, if: :first_condition?, if: :second_condition?
我还尝试将两个条件与'&&'结合使用,但没有用。after_save :after_save_method, if: :first_condition? && :second_condition?
为什么不能多次使用if
?
apidoc的示例在http://edgeguides.rubyonrails.org/active_record_callbacks.html#multiple-conditions-for-callbacks处带有除非和if,但是没有说不允许两个“if”。
为此,我的解决方案是将所有必需的代码放入一个方法中,并仅对该方法进行求值,但我只想确保if
的内容。
最佳答案
我建议您创建一个知道所需逻辑的私有(private)方法:
after_save :after_save_method, if: :first_condition_and_second_condition?
private
def first_condition_and_second_condition?
first_condition? && second_condition?
end
关于ruby-on-rails - Rails回调: Use if more than once as conditional in a callback,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25537260/