DataMapper的想法是definitely better比ActiveRecord。它有一个用于各种数据存储的API,包括RDBMS和NoSQL存储。 DataMapper比ActiveRecord聪明得多。它有“战略渴望加载”。这个特性一手抹去了“N + 1查询问题”。此外,它允许像Text属性一样重载字段的延迟加载。 DataMapper允许您创建和搜索任何复杂的对象图,只需提供条件的嵌套散列即可。 ActiveRecods不适合用于生产中的关联。包含方法很丑并且不可配置。 2010年10月,Josh Symonds制作了一个patch for this method,允许将字段从急切加载中排除。但是那条路被忽略了,今天在rails3中我们有同样丑陋的包含方法。使用DataMapper代替ActiveRecord
即使在Rails3中使用AREL,ActiveRecord也远不是最好的rails for org。你可能会说“哇,那个新的gem metawhere允许编写像Article.where(:title.matches => 'Hello%', :created_at.gt => 3.days.ago)
这样好的代码”。但是请等待...... DataMapper支持这个功能!也许而不是修改ActiveRecord看起来像DataMapper更好地扩展和支持更好的orm? DataMapper的更多细节可在http://datamapper.org/找到。
我认为,以后版本中的rails应该允许我们选择使用哪个orm,就像现在它允许数据库选择一样。即使它只有一个选项“ActiveRecord”,人们会搜索可用的替代方案。当我开始学习rails时,我认为只支持ActiveRecord。后来我甚至没有尝试寻找别的东西。
为什么我写这些东西?我认为,我们需要更多地关注这个漂亮的ORM。如果您是一些流行的或不是如此流行的gem的开发人员,请考虑添加对DataMapper的支持。 DataMapper社区应该从ActiveRecord或其他ORM编写一些迁移指南,并且保持文档不断更新,并且您可能会帮助他们。至于我,DataMapper社区需要更多的人,你可能就是其中之一。 此ORM的唯一缺点是缺少文档,您可能会提供帮助。
那么你怎么看待这个问题呢?
我知道并使用它。但这并不是那么清楚(在rails中,你无法找到它,只有“skip-active-record”) – AlexParamonov 2011-03-18 11:46:30