我的/lib 文件夹中有一个类,我的delayed_job 守护程序调用它来处理Foo 类型的对象。如果我在工作类中没有“需要'foo'”,那么它不知道如何处理从数据库中获取的 YAML,我会收到“未定义的方法”错误。添加“需要'foo'”显然会解决这个问题,这是通常的解决方案。
但是..问题是我在 Foo 类中有 counter_cache=>true。因此,当 DJ 守护进程加载 Rails 环境时,会自动加载 Foo 并为我的 counter_cache 添加回调。然后,delayed_job 守护进程运行,执行“需要'foo'”,它乖乖地重新加载 Foo 并为 counter_cache 添加另一个回调,这导致我的 counter_cache 为添加或删除的每一行更新两次。
有没有办法包装 :counter_cache=>true 所以它只运行一次?有没有办法让我的 DJ 工人类使用“Foo”类型的对象而不必显式使用“requires”?