我目前有这样的事情:
class Article
# fields = [flag, something]
after_create :update_flag
def update_flag
self.flag = 1 if something_changed?
end
end
但是当我更改某个字段时,它不会更改'flag'字段。我保存了这个物体。仍然没有变化。
a = Article.create(flag: 0, something: "content")
a.something = "different"
a.save
a.flag
> 0
有什么想法吗?
答案 0 :(得分:5)
答案 1 :(得分:0)
after_create()
在Base.save之后调用尚未保存的新对象(不存在记录)。
after_save的()
在Base.save之后调用(无论是创建还是更新保存).`
答案 2 :(得分:0)
改变" after_create" to" after_save"因为after_create只能工作一次 - 就在首次创建记录之后每次保存对象时,after_save都会工作 - 即使您多年后才更新它。
参考 - What is the difference between `after_create` and `after_save` and when to use which?