如何在Rails模型中正确挂钩到after_create

Dam*_*che 3 ruby-on-rails-3

我目前有这样的事情:

class Article

  # fields = [flag, something]

  after_create :update_flag

  def update_flag
    self.flag = 1 if something_changed?
  end
end
Run Code Online (Sandbox Code Playgroud)

但是当我更改某个字段时,它不会更改"标志"字段.我保存了这个物体.仍然没有变化.

a = Article.create(flag: 0, something: "content")
a.something = "different"
a.save

a.flag
> 0
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

luc*_*tte 5

更改

after_create
Run Code Online (Sandbox Code Playgroud)

after_update
Run Code Online (Sandbox Code Playgroud)

在您的代码示例中,您正在更新对象,这就是您需要不同钩子的原因.有关详细信息,请参阅文档.