Ruby on rails Rails 3中的DataMapper与ActiveRecord

Ruby on rails Rails 3中的DataMapper与ActiveRecord,ruby-on-rails,activerecord,datamapper,Ruby On Rails,Activerecord,Datamapper,我很好奇你们对DataMapper的看法,以及它给Rails 3中新的和改进的ActiveRecord带来了什么好处 非常感谢您的意见。我在Rails 2中使用了Active Record,在Merb和Rails 3中使用了DataMapper,现在我每天都使用DM/Rails 3。我读过AR3,但只在一个小项目中使用过它(一个内部应用程序) 我发现我真正关心的唯一区别是DM的。它很少做人们希望做的事情,也很少做它用FM做的事情,不管是对是错 使用显式,毫无疑问应该发生什么:它说它做什么,并且(

我很好奇你们对DataMapper的看法,以及它给Rails 3中新的和改进的ActiveRecord带来了什么好处


非常感谢您的意见。

我在Rails 2中使用了Active Record,在Merb和Rails 3中使用了DataMapper,现在我每天都使用DM/Rails 3。我读过AR3,但只在一个小项目中使用过它(一个内部应用程序)

我发现我真正关心的唯一区别是DM的。它很少做人们希望做的事情,也很少做它用FM做的事情,不管是对是错

使用显式,毫无疑问应该发生什么:它说它做什么,并且(通常)做它说什么

虽然“自动”快速加载听起来不错,但我发现它对我有两个负面影响:

  • 花在搜索过度查询源上的时间并非微不足道
  • 代码中充斥着伪急于加载的黑客行为,其中关系被物化并被丢弃,只是为了以偶尔不会“粘住”并且永远不会自我记录的方式启动它们和身份映射

  • 否则,我发现AR和DM是相同的动物,有不同的斑点。不像说,.

    我更喜欢DM而不是AR。我觉得DM实际上是一个ORM,而AR只是SQL的包装器。DM使得在数据存储之间切换非常容易。DM的查询语法更为同质,等等。SEL(战略渴望负载)也使DM看起来更像一个对象存储,而不是AR


    此外,DM类预先定义了属性,使代码更具可读性。来到DM世界后,我从未错过过迁移。(即使如果你真的愿意,你也可以拥有它们)。对于rails 3,我几乎完全使用DM。

    你们不觉得实现DM的成本太高了吗。就所有你可能想使用的宝石而言,他们假设你有AR,然后你需要破解这些宝石等等。例如,Deviate是一个很好的用户身份验证gem,但它需要AR,尽管已经有第三方Deviate dm gem,但它是第三方,谁知道他们何时会停止支持它,或者何时会在不更新包装的情况下更新Deviate。这是一个很好的例子。DM也有相当多的第三方宝石。随着时间的推移,随着DM的成熟,这些问题将逐渐消失。我还没有看到能够处理类表继承的activerecord,而DataMapper似乎可以。有人能证实这一点吗?你用续集吗?如果没有,为什么不呢?@gucki我在一年多前的一个项目中使用了它,但从那时起就改用了DM。我真的不太记得我们曾经有过什么问题,我想这可能是在坚持之前处理人际关系的问题,但我不想发誓。我记得Sequel本身并没有什么问题,比如bug,问题是设计阻抗不匹配。若我今天开始一个新项目,我肯定会再次回顾续集,因为这些天我对ORM的谎言感到非常厌倦。