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