为什么ActiveRecord不是模块?

时间:2010-08-03 01:43:56

标签: ruby-on-rails activerecord

要获取所有ActiveRecord好东西,您的班级必须从ActiveRecord::Base继承:

class Post < ActiveRecord::Base

为什么不让用户将include ActiveRecord作为模块呢?

这种方法的优点是Rails可以自动在models目录的所有类中包含ActiveRecord,使其对用户完全透明。即:

class Post # no `< ActiveRecord::Base`!

这是Rails中的(相对较小的)设计缺陷吗?

1 个答案:

答案 0 :(得分:1)

ActiveRecord不是Hibernate。 ActiveRecord模型不是纯模型 - 它们是显式的Active Records并遵循Active Record模式的语义。

这不是设计缺陷。这是一个完全不同的设计目标。

我当然希望看到Ruby Hibernate。但ActiveRecord不是它。

Martin Fowler describes积极记录:

  

在数据库表或视图中包装行的对象,封装数据库访问,并在该数据上添加域逻辑。