gpt4 book ai didi

ruby-on-rails - ActiveSupport::类方法的回调

转载 作者:数据小太阳 更新时间:2023-10-29 07:36:34 24 4
gpt4 key购买 nike

是否可以在类方法上使用 ActiveSupport::Callbacks?更具体地说,在下面的模块中,您会将 include ActiveSupport::Callbacks 放在哪里,以使 define_callbacksrun_callbacks 共享相同的状态?

module Handler
extend ActiveSupport::Concern

# If you put it here, define_callbacks is defined but run_callbacks is not
# include ActiveSupport::Callbacks

included do
class_eval do
define_callbacks :handle
end
end

module ClassMethods
# If you put it here, run_callbacks is defined but define_callbacks is not
# include ActiveSupport::Callbacks

def handle(task)
run_callbacks :handle do
p task
end
end
end
end

class HandlerExample
include Handler
end

更新

如果可能(我无法确定),那肯定不是 ActiveSupport::Callbacks 设计的目的。最好在 #handle 中创建无状态实例对象。

最佳答案

虽然整个想法有点尴尬恕我直言,但您已经将 define_callbacks 放在了错误的位置。您应该将它放在特征类中,例如

评估<<-EOF 类<< self ;定义回调.. ; 结尾

然后您可以执行“发送:扩展,ActiveSupport::Callbacks”。这甚至可能有效。

但我建议您重新考虑一下,并采用标准实现,在实例上调用回调。

关于ruby-on-rails - ActiveSupport::类方法的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12870244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com