不影响Rails中的类名称空间的目录

时间:2019-07-10 14:36:38

标签: ruby-on-rails ruby namespaces autoload directory-structure

我正在构建Rails 5.2.x应用程序,并且正在寻找改善项目目录结构的方法。

我的应用程序中的某些模型类代表事件,我想将它们与其他不代表事件的类分开。

所以理想情况下,我希望有一个events子目录:

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

其中分别包含SomethingSomeEvent

尽管如此,在这种情况下,Rails似乎要求我将事件类命名为Events::SomeEvent

我的实际类已经大量使用名称空间,因此名称又长又笨拙。我希望能够在开发时轻松地在视觉上分离事件类,而不必使用更长的名称。

此外,在发生事件的情况下,我也希望避免更改类名,因为加载历史数据会将名称反序列化为正确的类。

是否有一种方法可以在Rails中引入其他子目录而无需将它们表示为名称空间组件?如果是这样,我真的很想知道如何。

1 个答案:

答案 0 :(得分:0)

约定而不是配置的想法是使您以更轻松,更常规的方式进行编码,尽管Rails为您提供了很大的灵活性,可以在您的应用程序中反映您的想法。在您的情况下,如果要在模型中引入其他目录,只需添加 config.autoload_paths + =%W(#{config.root} / app / models / events)(在在我的情况下,图片在 config / application.rb 中加深了相同的含义,以便您上课:

enter image description here

,我的类看起来像没有任何名称空间的常规类。这应该可以解决您的目的。