2015-07-08 2 views
1

Я создал модель в Mongoid ATSJob, но всякий раз, когда я называю его в любом месте, это дает мне:Заглавные буквы в Mongoid модели (Rails) получение ошибки

uninitialized constant name_of_current_file::ATSJob

Я полагаю, что есть что-то от о том, множественные капиталы в имени модели, но я не знаю, как исправить это, что я хочу.

Чтобы уточнить, когда я меняю имя на Atsjob в модели, он работает.

Спасибо!

+0

Я не думаю, что это проблема с названием модели. Похоже, что ваша модель не находится в пути загрузки, следовательно, «неинициализированная константа». Вы разместили эту модель в каталоге приложений/моделей? +1 – Donato

+0

Да, извините, позвольте мне уточнить – ForgetfulFellow

+0

, что такое фактическое имя файла? Rails имеет соглашение о том, что имя файла должно совпадать с именем константы. – Donato

ответ

0

Rails имеет соглашение о том, что модель должна быть единственной формой имени таблицы и что имя файла должно совпадать с именем константы. Если у вас есть таблица под названием atsjobs, то ваше имя модели Atsjob, которое должно жить в файле с именем atsjob.rb. Теперь, если вы хотите сделать это camelcase, тогда вы создадите модель под названием AtsJob, которая будет жить в файле с именем ats_job.rb (обратите внимание на подчеркивание). Имя файла имеет соглашение с именем модели. Следовательно, должно быть подчеркивание за прописную букву.

Таким образом, в вашем случае, попробуйте следующее для имени файла:

a_t_s_job.rb 

То есть, я хотел бы использовать верблюжий над этим подходом. Что-то вроде AtsJob.rb более условно.

+0

как мне это сделать ATSJob? – ForgetfulFellow

+0

@ForgetfulFellow a_t_s_job.rb не работает? – Donato

0

Если вы хотите использовать имя ATSJob вместо AtsJob, вы можете добавить «ATS» в качестве акронима в ActiveSupport Inflector. В папке config/initializers уже должен быть инициализатор с именем «inflections.rb». Изменить или создать этот файл с чем-то вдоль линий:

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

Больше информации о инфлекторе здесь: http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html

Смежные вопросы