7

我最近与我的一位朋友进行了讨论,他也是一名 RoR 开发人员。我们讨论了应该如何管理 Rails 模型。就我个人而言,我喜欢在默认命名空间中只保留根模型(例如 User、Article、Bill 等),而依赖模型会转到具有根名称的模块(例如 User::Profile、User::Activity)它们关联的模型。

另一方面,我看到很多项目在默认命名空间中有 100 个模型,称为 user_profile、user_activity 等。从 Java (Spring) 开发来看,java 社区倾向于将类组织在包中,并将它们按逻辑分组,我觉得这很吸引人。

所以问题是:在模块中对模型进行分组是否有任何缺点(除了关系定义中的额外 :class_name )以及人们通常不这样做的任何具体原因吗?

4

1 回答 1

4

尽管命名空间有其优势,但它确实需要在整个模型中添加异常。Foo::Bar 假定关联的表名bars和同样bar_id,而您可能更喜欢foo_barsfoo_bar_id被使用。

如果你真的对此有强烈的感觉,你可能想看看是否有一个插件可以为你解决这个问题,或者实现你自己的扩展。

我使用命名空间的唯一情况是用于第三方应用程序中的附加组件,我不想声明根级模型名称,因为那会很烦人。在这种情况下,额外的努力是值得的。

如果您对看到 100 多个没有任何分组的模型文件感到困扰,那么您可能会同样对看到 100 多个没有分组的表感到恼火,这通常是您无法解决的问题。

控制器很自然地适合分组,但模型并不那么容易适应,至少不能使用现有的 ActiveRecord。

于 2012-03-28T19:06:25.613 回答