我正在使用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/

10-16 22:23