为什么在ActiveSupport :: Callbacks时,与回调名称相同的方法需要run_callbacks

时间:2012-05-02 23:05:28

标签: ruby-on-rails callback activesupport

我已经让这个测试类试验了不在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 

保存回调不会在save方法中运行,除非我手动调用它们。

0 个答案:

没有答案