gpt4 book ai didi

ruby-on-rails - Rails - 放置非 Active Record 模型的位置(目录)

转载 作者:数据小太阳 更新时间:2023-10-29 06:30:41 25 4
gpt4 key购买 nike

我们正在构建具有非数据库组件模型的应用程序。我们很想知道 Rails 社区中的其他人正在做什么来解决这个问题。

我们正在为将它们放在哪里而苦恼。

我们应该:

app/models/domain

app/domain/models

或许

app/models   # Business Models
app/models/ar # Active Record Models

或许

app/models/domain/   # Business Models
app/models/domain/ar # Active Record Models

部分原因是我们正在努力解决如何接近 Rails 标准,以及在多大程度上创建一个适合我们需要的结构。

如果我们将对象视为服务对象,我们可以有

app/models/service-object

app/models/ # For plain active record

另一个失败的途径是应用内没有东西,例如

/service_objects

代替

/app/models/service_objects

大概如果我们想通过 Rails 应用访问我们最好使用 app/以利用约定优于配置。

最佳答案

根据我的经验,将这些模型放置在何处的划分归结为它们在应用程序的特定上下文中所代表的功能。

我通常为基于资源的模型保留app/models。如果该模型表示由您的应用程序实例化和操作的资源,则它会出现在这里。不需要 AR 或数据库支持。

如果模型提供一致的功能但参数不同,我会在应用程序中为它们提供顶级目录。例如 app/mailers app/observers 等。但是,如果您有一个需要观察者的资源,那么拥有一个 app/observers 可能没有意义 目录中只有一个文件。

其他所有内容都在 lib 中。有几个原因为什么这是更可取的。

  1. 您可以选择何时需要lib 中的文件。您可以更有选择性地选择在您的应用程序启动时加载哪些文件。如果您将所有内容都放在 app/models 中,您将无法确定加载的内容。

  2. 在 lib 中更容易随着应用的增长为模型命名空间。当然你可以在 app/models 中命名空间,但是在 app/models 中嵌套几层总是很糟糕。最好将命名空间保留在 lib 中。

  3. 当您将元素放在其功能正确的位置时,内务管理会变得容易得多。不是资源?不是观察员吗?必须在 lib 中。您预先考虑这一点的全部原因是为开发人员提供可发现性。

关于ruby-on-rails - Rails - 放置非 Active Record 模型的位置(目录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16466024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com