【发布时间】:2015-03-11 08:28:39
【问题描述】:
我使用的是 Rails 4.0.0。我有以下设置:
class Foo < ApplicationController
before_validation :foo, on: :create
...
private
def bar
puts 'bar is called'
end
end
这有效 - 在控制台中,当我创建 foo 时,我看到消息“已调用栏”。如果我在foo 上调用valid?,则不会调用该消息(正确行为)。
现在我想在update 上添加这个回调。我尝试了两件事:
before_validation :foo, on: [:create, :update]
和
before_validation :foo, on: :create
before_validation :foo, on: :update
在这两种情况下,我都看到了以下问题。在控制台中,如果我像这样实例化foo:foo = Foo.last,然后调用foo.valid?,我会看到bar 被触发,尽管我没有更新foo。我希望它只在foo.update(...) 之后被调用。我做错了什么还是这是预期的行为?
【问题讨论】:
-
before_validation :foo或before_validation :bar?
标签: ruby-on-rails activerecord callback object-lifetime