更改before_update回调中的属性值

时间:2014-12-29 10:32:12

标签: ruby-on-rails ruby-on-rails-4 callback

当我检测到attribute_1已更改并即将更新时,我尝试更改attribute_2值。

对象会更新,但设置的attribute_1值不会持久,为什么?

before_update :check_attribute2_change

def check_attribute_2_change
  if attribute_2_changed?
      attribute_1 = nil
  end
end

2 个答案:

答案 0 :(得分:2)

试试这个:

before_update :check_attribute2_change

def check_attribute_2_change
  self.attribute_1 = nil if attribute_2_changed?      
end

答案 1 :(得分:0)

如果您在模特身上,请致电:

save!

您的代码将如下所示:

before_update :check_attribute2_change

def check_attribute_2_change
  if attribute_2_changed?
      attribute_1 = nil
      save!
  end
end

请注意" before_update"回调,在对象在数据库中保存(持久化)之前调用。在此阶段更改一个属性时,需要保存它。