2011-03-18 41 views
5

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的唯一缺点是缺少文档,您可能会提供帮助。

那么你怎么看待这个问题呢?

回答

4

Rails 3允许您使用Datamapper,而不是默认情况下。它你想的DataMapper与轨道3.使用只是这样做

 
    rails new project_name -m http://datamapper.org/templates/rails.rb 

Rails允许你选择,你甚至可以用使用--skip-主动记录选项。 :)(可能不是直接的,但它的存在。

,是的,DataMapper的是真棒。:)

+0

我知道并使用它。但这并不是那么清楚(在rails中,你无法找到它,只有“skip-active-record”) – AlexParamonov 2011-03-18 11:46:30

1

缺少文档是一个巨大的问题。我已经开始使用DataMapper进行数据库的开发了,并决定为我的数据实现一个Web界面。将DM纳入Rails作为每个初学者都是一个巨大的挑战。因此,我很好奇,你知道任何显示DM/Rails使用的资源吗?当我不确定如何继续时,我很乐意看到一些东西。

+0

我自己走过这条路,同时完全放弃了DM。几乎没有交通DM邮件列表和答案非常缓慢。 AR似乎并不像DM那么直截了当,但我认为如果你真的想用你的应用程序进行制作,AR绝对没有办法。 AR附近的生态系统就像大量的宝石一样依赖于它,这是坚持AR的理由。 – lumpidu 2012-04-13 15:37:53