我在名为Plac
的模型中引用了一个自定义类模型在models / plac.rb中定义如下:
class Model < ActiveRecord::Base
def notify_owner
notifier = BatchNotify.getInstance
end
end
BatchNotify在lib / modules / batch_notify.rb中定义如下:
class BatchNotify
def self.getInstance
env = Rails.env
if(env == "test")
return TestBatchNotify.new
else
BatchNotify.new
end
end
end
我还将模块目录添加到autoload_path:
config.autoload_paths += %W(#{config.root}/lib/modules)
奇怪的是,当来自rails控制台的notify_owner()运行良好时。
但是,当我使用rails服务器启动Web服务器并尝试使用浏览器中的应用程序触发notify_owner时,我收到以下错误:
未初始化的常量Plac :: BatchNotify
首先,为什么控制台与Web服务器的行为不同?
其次,为什么它仍然无法识别批量通知常量?
顺便说一句,我也尝试在模块中定义BatchNotify并将其作为Module :: BatchNotify引用而没有运气......
答案 0 :(得分:0)
有两种方法可以正确加载BatchNotify类。
使用以下代码添加config / initializers / 00_requires.rb文件:
require "#{Rails.root}/lib/modules/batch_notify.rb"
或者,需要Model
类中的models / placebo.rb:
require "#{Rails.root}/lib/modules/batch_notify.rb"
关于此代码的其他几条评论:
Model
在Rails中不是一个好的类名。