【发布时间】:2014-10-23 16:15:01
【问题描述】:
我有一个文件 lib/stock_reader.rb 我试图在其中创建一个像这样的模型:
module StockReader
def self.create_company_reports(company_data)
CompanyReport.create(name: company[:name])
end
end
在另一个文件 lib/curate.rb 中,我调用了这个方法:
require_relative 'stock_reader'
StockReader.create_company_reports(company_data)
但我收到错误:
/Users/me/code/applications/curator/lib/stock_reader.rb:38:in `block in create_company_reports': uninitialized constant StockReader::CompanyReport (NameError)
from /Users/me/code/applications/curator/lib/stock_reader.rb:37:in `each'
from /Users/me/code/applications/curator/lib/stock_reader.rb:37:in `create_company_reports'
from lib/curate.rb:12:in `<main>'
似乎我的 lib 目录无法识别我的模型在 app/models/company_report.rb 中的存在:
class CompanyReport < ActiveRecord::Base
end
我猜这可能是因为 lib/ 目录是在 app/models 之前加载的,但我不确定。
我查看了Accessing models from within the lib directory in a Rails 3 project,但看不到任何 rakefile 中需要我的 lib/ 目录的位置。
【问题讨论】:
-
您打算什么时候运行
CompanyReport.create行? -
@Jordan 我在 lib/ 中有另一个文件,我在其中调用包含 CompanyReport.create 的 StockReader 方法。我使用
require_relative 'stock_reader'在该文件中包含 StockReader 模块 -
您还没有在 StockReader 中定义任何方法...
-
@Jordan 为了简洁起见,我省略了这些方法
-
那很好,除了您发布的代码与其中包含方法的模块具有完全不同的语义,并且没有告诉我们我们需要了解您所处的上下文试图访问
CompanyReport。请发布您的实际代码。
标签: ruby-on-rails activerecord ruby-on-rails-4