2010-08-03 412 views
1

要获取所有ActiveRecord的东西你的类必须从ActiveRecord::Base继承:为什么ActiveRecord不是一个模块?

class Post < ActiveRecord::Base 

为什么不要求用户include的ActiveRecord作为一个模块来代替?

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

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

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

回答

1

ActiveRecord不是Hibernate。 ActiveRecord模型不是纯模型 - 它们是显式的活动记录并遵循活动记录模式的语义。

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

我当然想看看Ruby Hibernate。但ActiveRecord不是。

马丁福勒describes的活动记录为:

在一个数据库中的表或视图包装了一个行的对象,封装了数据库访问,以及在该数据添加域逻辑。

+0

是不是DataMapper更像Hibernate? (只有红宝石,所以这可能是一个误解。) – 2010-08-03 02:01:04