Ruby on Rails中模型设计的最佳实践

Nic*_*ckR 8 ruby activerecord ruby-on-rails

RoR教程为每个表提供一个模型,以便ORM工作.我的数据库模式有大约70个表在概念上划分为5组功能(例如,任何给定的表存在于一个且只有一个功能组中,并且不同组的表之间的关系被最小化.)因此:我应该为每个概念组设计一个模型,或者我应该简单地拥有70个Rails模型并让分组"概念化"?谢谢!

Cli*_*ach 10

最有可能的是,你应该有70个型号.您可以将模型命名为5个名称空间,每个组一个,但这可能比它的价值更麻烦.更有可能的是,每个组都有一些共同的功能.在这种情况下,我会为包含其行为的每个组创建一个模块,并将其包含在每个相关模型中.即使没有共享功能,执行此操作也可以让您快速查询模型的概念组.


Dan*_*per 8

我通过确保表格/模型在概念上按名称分组(几乎是1:1的表格 - 模型关系)来覆盖我的一个大型应用程序.例:

events
event_types
event_groups
event_attendees
etc...
Run Code Online (Sandbox Code Playgroud)

这样,当我使用TextMate或其他任何东西时,模型文件通过alpha排序很好地组合在一起.我在这个应用程序中有80个模型,它运行良好,可以保持井井有条.


Ben*_*Ben 6

你绝对应该为每个表使用一个模型,以便利用所有的ActiveRecord魔法.

但您也可以使用模块和子目录将模型组合到命名空间中,以避免在模型目录中管理70个文件.

例如,您可以:

app/models/admin/user.rb
app/models/admin/group.rb
Run Code Online (Sandbox Code Playgroud)

对于模型Admin :: User和Admin :: Group,and

app/models/publishing/article.rb
app/models/publishing/comment.rb
Run Code Online (Sandbox Code Playgroud)

出版::文章和出版::评论

等等...