我試圖在一個方法內手動運行所有的回調方法。例如,我想在我的模型中運行所有「before_destroy」方法。你可以在Ruby on Rails中手動「觸發」回調嗎?
有沒有辦法手動觸發這個?例如,像:
def some_method
# ...
trigger(:before_destroy)
end
然後將運行了我與聲明的所有方法「before_destroy:......」
任何想法?
我試圖在一個方法內手動運行所有的回調方法。例如,我想在我的模型中運行所有「before_destroy」方法。你可以在Ruby on Rails中手動「觸發」回調嗎?
有沒有辦法手動觸發這個?例如,像:
def some_method
# ...
trigger(:before_destroy)
end
然後將運行了我與聲明的所有方法「before_destroy:......」
任何想法?
如果你感到快樂同時運行:前:掛機後,你可以嘗試run_callbacks
。 從the docs:
run_callbacks(kind, &block)
運行的特定事件的回調。
以它們被設置的順序調用before和around回調,產生塊(如果給定一個),然後以相反順序運行after回調。
如果回調鏈暫停,則返回false。否則返回塊的結果,如果沒有給出塊,則返回true。
run_callbacks :save do
save
end
class Foo < ActiveRecord::Base
def destroy_method_1
end
def destroy_method_2
end
before_destroy :destroy_method_1, :destroy_method_2
DESTROY_METHODS = [:destroy_method_1, :destroy_method_2]
def some_method
DESTROY_METHODS.each {|m| send(m) }
end
end
lol。這是我見過的更糟糕的代碼:(sry mate – 2017-04-04 11:22:25
@huanson不必要的意思和無益的幫助 – 2017-11-25 19:07:33
這很好,謝謝! – sjsc 2014-09-30 00:01:43