我的模型中有ff代码:
before_save :before_save_method
attr_accessor :corrective_change
attr_accessible :corrective_change
attr_accessible :corrective_desc
private
def before_save_method
if corrective_change == 0
self.corrective_desc = corrective_desc_was
end
end
但是,无论corrective_change
的值是多少,self.corrective_desc
的值仍然会根据用户的输入值进行更新。
测试了所有变量的值,我可以在logger中查看它们就好了,但条件不起作用。
有谁可以指出问题是什么?
非常感谢。
答案 0 :(得分:0)
1)你确定corrective_change是一个Integer而不是一个字符串吗? (将int与string = fail比较)
2)这是一张新纪录吗?如果是这样,corrective_desc_was可能不存在(它不会在2.3,不确定3.x)
3)考虑尝试这个:
def before_save_method
if self.corrective_desc_changed? && self.corrective_change == 0
self.corrective_desc = self.corrective_desc_was
else
logger.info "corrective_desc not changed or corrective_change != 0"
end
end
4)另外,如果它是纠正性的变化,那么也许before_update会更适合而不是before_save,因为这也会在创建时被调用。