我已经制作了这个测试类来试验不在 AR 中的回调。但由于某种原因,我必须手动调用它们。在某种程度上,这似乎毫无意义。
class TestClass
include ActiveSupport::Callbacks
define_callbacks :save
set_callback :save, :before, :speak
set_callback :save, :after, :bark
def save
puts 'saving...'
end
def other_it
run_callbacks :save do
puts 'saving...'
end
end
def speak
puts "hi"
end
def bark
puts "ruff"
end
end
似乎我不必在 :save 方法中指定 run_callback 方法,但我显然必须这样做。我错过了什么?看到这个输出:
ruby-1.8.7-p352 :016 > t = TestClass.new
ruby-1.8.7-p352 :017 > t.save
saving...
=> nil
ruby-1.8.7-p352 :018 > t.other_it
hi
saving...
ruff
=> nil
保存回调不在保存方法中运行,除非我手动调用它们。