Mongoid模型(Rails)中的大写字母出错

时间:2015-07-08 17:42:11

标签: ruby-on-rails model mongoid

我在mongoid ATSJob中创建了一个模型,但每当我在任何地方调用它时,它都会给我一个:

uninitialized constant name_of_current_file::ATSJob

我认为在模型名称中有多个大写字母有一些不足之处,但我不知道如何将其修复为我想要的。

为了进一步澄清,当我在模型中将名称更改回Atsjob时,它可以正常工作。

谢谢!

2 个答案:

答案 0 :(得分:0)

Rails有一个约定,即模型必须是表名的单数形式,并且文件名必须与常量名匹配。如果您有一个名为atsjobs的表,那么您的模型名称为Atsjob,该名称应位于名为atsjob.rb的文件中。现在,如果你想让它成为camelcase,那么你将创建一个名为AtsJob的模型,它将存在于一个名为ats_job.rb的文件中(注意下划线)。文件名具有模型名称的约定。因此,每个大写字母应该有一个下划线。

因此,在您的情况下,请尝试以下文件名:

a_t_s_job.rb

那就是说,我会使用camelcase来实现这种方法。像AtsJob.rb这样的东西更传统。

答案 1 :(得分:0)

如果您想使用名称ATSJob而不是AtsJob,您可以添加" ATS"作为ActiveSupport Inflector的首字母缩写词。应该已经有一个名为" inflections.rb"的初始化程序。在config / initializers文件夹中。使用以下内容修改或创建此文件:

ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.acronym 'ATS'
end

有关Inflector的更多信息,请点击此处: http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html