1

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 メソッドでは実行されません。

4

0 に答える 0