Я думаю, что ответ апноэ - хороший подход
Основываясь на исследованиях с ActiveSupport 3.0.11, при выборе имени каталога следует соблюдать некоторые правила:
- Имя не должно совпадать с константой в вашей системе, иначе может возникнуть ошибка LoadError
- Имя должно быть в состоянии преобразовать в допустимое имя константы, иначе произойдет ошибка NameError.
Объяснение проблемы # 1
Пример Apneadiving для имени каталога app / models / user_related работает до тех пор, пока
Константа UserRelated никогда не используется в вашем коде. В противном случае ошибка LoadError может
потенциально может случиться.
Например, предположим, что была модель с именем UserProfile и впервые
rails видит, что константа находится в модуле UserRelated. Rails сначала попытается
загрузить константу UserRelated \: \: UserProfile и, если это не так, UserProfile
постоянная.
Если файл user_profile находится в app / models / user_related / user_profile.rb, это
соответствует подчеркнутому пути UserRelated \: \: UserProfile, и файл будет
быть загруженным в ожидании определения константы UserRelated :: UserProfile. это
вызовет следующую ошибку, потому что это действительно определяет UserProfile
постоянная.
Expected app/models/user_related/user_profile.rb to define UserRelated::UserProfile (LoadError)
Это происходит в коде зависимости активной поддержки.
Объяснение проблемы # 2
Еще одна оговорка: имя каталога должно быть в состоянии превратить в действительный рубин.
имя константы (хотя для # 1 константа должна быть неопределенной). За
Например, если имя каталога было app / models / user.related, это приведет к
в следующей ошибке внутри кода зависимости active_support:
wrong constant name User.related (NameError)