我一直在阅读“SQL Antipatterns: Avoiding the Pitfalls of Database Programming”一书,尤其是关于魔术豆反模式的书。在它显示了一个使用域模型解耦活动记录的图表,并在 PHP 中有示例,但在 Rails 中没有,它将此称为域模型和视图/控制器之间的 HAS-A 聚合以及域模型和活动记录之间的 HAS-A 组合(I假设这是 UML 语言)。
在 Rails 中,使用模型方法使瘦控制器变成胖模型似乎很常见,这些方法可以操作其他关联的模型,以便在任何给定的控制器中只能使用一个模型。但是,我想知道在 Rails 中是否有一种包括完全解耦的做法?
也就是说,创建一个无表模型或其他类用作域模型,充当控制器和活动记录对象之间的层(这些对象又映射到表),以便控制器具有更好的隔离性并且不需要知道任何东西关于底层数据库及其结构。它还提供了摆脱不解释它们应用的应用程序要求的 CRUD 方法的选项,这是书中的另一个批评。