Подтвердить что ты не робот

Rails 4: организовать модели рельсов в подпути без шаблонов имен?

Можно ли иметь что-то вроде этого?

app/models/
app/models/users/user.rb
app/models/users/education.rb

Цель состоит в том, чтобы лучше упорядочить папку /app/models, но без пространства имен для моделей.

Вопрос без ответа для Rails 3 находится здесь: Rails 3.2.9 и модели в подпапках.

Кажется, что задано имя table_name с пространствами имен (см. подкаталог Rails 4), но Я хочу сделать это без пространства имен.

4b9b3361

Ответ 1

Да, это определенно возможно. Единственный трюк в том, что вам нужно добавить подкаталоги /app/models в путь загрузки для Rails. Для этого добавьте следующее в /config/application.rb:

config.autoload_paths += Dir[Rails.root.join("app", "models", "{*/}")]

Таким образом, Rails знает, что нужно автоматически загружать вложенные папки /app/models без необходимости каких-либо указаний на имена.

Примечание. Если у вас более сложный каталог/приложение/модели, описанный выше метод объединения всех подпапок в /app/models может не работать. В этом случае вы можете обойти это, будучи немного более явным:

config.autoload_paths += Rails.root.join("app", "models", "<my_subfolder_name>")

UPDATE для Rails 4.1 +

По Rails 4.1 генератор приложения не включает config.autoload_paths по умолчанию. Итак, FYI, приведенное выше относится к config/application.rb.

UPDATE

Исправлены пути пути автозагрузки в приведенном выше коде, чтобы использовать {*/} вместо {**}. Обязательно прочитайте комментарий muichkine для получения более подробной информации об этом.