更新属性before_save回调不保存额外属性

时间:2013-10-31 13:16:49

标签: ruby-on-rails activerecord attributes callback

如果许多其他属性不是0,我正在使用before_save回调方法将属性设置为true。当我更新模型但未设置额外属性时,将调用回调。我认为可能是因为该属性未传递给update方法。我该如何解决这个问题?

控制器

@blog.update(blog_params)

模型

before_save do
  self.indicator = true unless attribute_1 == "0" && attribute_2 == "0"
end

2 个答案:

答案 0 :(得分:5)

您可以考虑使用before_validation。 Rails会在调用before_validation之前调用before_save回调,因此如果您需要确保设置一个值,那么就可以这样做。

答案 1 :(得分:3)

尝试将true放在所有代码

之后
before_save do
  self.indicator = true unless attribute_1 == "0" && attribute_2 == "0"
  true
end

所有回调都应该以任何方式返回