Rails 4 - 未初始化的常量Mongo模型

时间:2014-04-21 14:28:30

标签: ruby-on-rails mongodb heroku mongohq

我正在尝试使用Heroku和rails 4设置MongoHQ。根据我的知识,我已经正确设置了所有内容,但我现在收到此错误:

uninitialized constant Job::TempEmailContactStoreCsv

这是发生错误的Job模型:

class Job < ActiveRecord::Base
  belongs_to :user

  def store_email_contact_csv(file)
    contact_array = csv_to_array(file)
    TempEmailContactStoreCsv.create(email_contact_array: contact_array, job_id: id)
  end

end

我的mongo模特:

class TempEmailContactStoreCsv
  include Mongoid::Document

  field :email_contact_array, type: Array
  field :job_id

  def self.store(job_id, email_contact_array)
    r = TempEmailContactStoreCsv.find_by(job_id: job_id)
    if (r.nil?)
      TempEmailContactStoreCsv.create!(job_id: job_id, email_contact_array: email_contact_array)
    end
  end

  def self.exists?(job_id)
    r = TempEmailContactStoreCsv.find_by(job_id: job_id)
    return r.nil? == false
  end

  def self.retrieve(job_id)
    return TempEmailContactStoreCsv.find_by(job_id: job_id)
  end

  def self.delete(job_id)
    r = TempEmailContactStoreCsv.find_by(job_id: job_id)
    r.destroy unless r.nil?
  end

end

所以我的mongo模型似乎没有被初始化,而且命名空间对我来说也很奇怪。

有关导致此错误的原因以及如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:1)

对于rails自动加载类,该文件必须位于rails加载路径(包括app / models,因此你可以在那里),文件名应该是类名的camelcased版本。

在您的情况下,文件名应为temp_email_contact_store_csv.rb而不是temp_email_store_csv.rb