我试图在一个方法内手动运行所有的回调方法。例如,我想在我的模型中运行所有“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