【发布时间】:2011-10-12 20:52:02
【问题描述】:
我一直在阅读“SQL 反模式:避免数据库编程的陷阱”一书,尤其是关于魔术豆反模式的书。在它显示了一个使用域模型解耦活动记录的图表,并在 PHP 中有示例,但在 Rails 中没有,它将此称为域模型和视图/控制器之间的 HAS-A 聚合以及域模型和活动记录之间的 HAS-A 组合(I假设这是 UML 语言)。
在 Rails 中,使用模型方法使瘦控制器变成胖模型似乎很常见,这些方法可以操作其他关联的模型,以便在任何给定的控制器中只能使用一个模型。但是,我想知道在 Rails 中是否有一种包括完全解耦的做法?
也就是说,创建一个无表模型或其他类用作域模型,充当控制器和 activerecord 对象之间的层(这些对象又映射到表),以便控制器具有更好的隔离性并且不需要了解有关基础数据库及其结构的任何信息。它还提供了摆脱不解释应用程序要求的 CRUD 方法的选项,这是书中的另一个批评。
【问题讨论】:
标签: ruby-on-rails activerecord domain-driven-design anti-patterns domain-model