对于两个不同的领域,我需要对模型进行两种不同的计算。保存之前。
Class Event < ActiveRecord::Base
#some relations
before_save :method1, unless: :some_field_1?
before_save :method2, unless: :some_field_2?
def method1
some_field_1 = some_other_field / 2
end
def method2
some_field_2 = some_field_1 / 3
end
end
我遇到的问题是,调用method2时some_field_1为null。我的猜测是,像我在做的那样声明before_save回调是错误的。
我知道我可以将这两种方法合并为一个,而没有条件和问题的解决方法,但是我更喜欢有条件的回调。我想知道正确的做法。文档对此不太清楚。
非常感谢!
编辑
备查。代码还可以。问题出在其他地方(数据库)!
第二个before_save是否会覆盖第一个?
不
回调是否按照声明的顺序执行?
是的
由于您的属性不是布尔值,因此您可能不应该使用问号。尝试:
before_save :method1, unless: :some_field_1
before_save :method2, unless: :some_field_2
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句