Каталоги, которые не влияют на пространство имен классов в Rails - PullRequest
2 голосов
/ 10 июля 2019

Я создаю приложение Rails 5.2.x и ищу способы улучшить структуру каталогов моего проекта.

Некоторые классы моделей в моем приложении представляют события, и я хотел бы отделить их от другихклассы, которые не представляют события.

Так что в идеале я хотел бы иметь подкаталог events, подобный следующему:

[RAILS ROOT]/app/models/something.rb
[RAILS ROOT]/app/models/events/some_event.rb

, который содержит Something и SomeEvent в качестве образца.

Похоже, однако, что в этом случае Rails потребовал бы, чтобы я назвал класс событий * 1013. *

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

Также, в случае событий, я бы хотел избежать изменения имен классов, потому что загрузка историческихdata использует имя для десериализации в правильный класс.

Есть ли способ ввести дополнительные подкаталоги в Rails без необходимости представлять их как компонент пространства имен?Если это так, я бы очень хотел знать, как.

1 Ответ

0 голосов
/ 12 июля 2019

Идея соглашения о конфигурации состоит в том, чтобы сделать ваш код более простым и традиционным способом, несмотря на то, что Rails предлагает вам большую гибкость для отражения ваших идей в вашем приложении. В вашем случае, если вы хотите добавить дополнительные каталоги в свои модели, просто добавьте config.autoload_paths + =% W (# {config.root} / app / models / events) (это было изображение в моем в этом случае картинка выглядит точно так же) в config / application.rb , чтобы ваш класс выглядел следующим образом:

enter image description here

и мои классы выглядят как обычные без каких-либо пространств имен. Это должно решить вашу цель.

...