要获取所有ActiveRecord好东西,您的班级必须从ActiveRecord::Base
继承:
class Post < ActiveRecord::Base
为什么不让用户将include
ActiveRecord作为模块呢?
这种方法的优点是Rails可以自动在models目录的所有类中包含ActiveRecord,使其对用户完全透明。即:
class Post # no `< ActiveRecord::Base`!
这是Rails中的(相对较小的)设计缺陷吗?
答案 0 :(得分:1)
ActiveRecord不是Hibernate。 ActiveRecord模型不是纯模型 - 它们是显式的Active Records并遵循Active Record模式的语义。
这不是设计缺陷。这是一个完全不同的设计目标。
我当然希望看到Ruby Hibernate。但ActiveRecord不是它。
Martin Fowler describes积极记录:
在数据库表或视图中包装行的对象,封装数据库访问,并在该数据上添加域逻辑。