我在mongoid ATSJob中创建了一个模型,但每当我在任何地方调用它时,它都会给我一个:
uninitialized constant name_of_current_file::ATSJob
我认为在模型名称中有多个大写字母有一些不足之处,但我不知道如何将其修复为我想要的。
为了进一步澄清,当我在模型中将名称更改回Atsjob时,它可以正常工作。
谢谢!
答案 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