As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center提供指导。




9年前关闭。




DataMapper的想法是definitely better比ActiveRecord。它具有一个用于各种数据存储(包括RDBMS和NoSQL存储)的API。
DataMapper比ActiveRecord更智能。它具有“战略热切加载”。此功能可以单手抹去“N + 1查询问题”。另外,它允许延迟加载重载字段,例如Text属性。 DataMapper允许您仅通过提供嵌套的条件哈希来创建和搜索任何复杂的对象图。 ActiveRecods不适合用于生产中的关联。 include方法很丑陋且无法配置。在2010年10月,乔什·西蒙兹(Josh Symonds)制作了一个patch for this method,以便将字段从渴望加载的字段中排除。但是那条路被忽略了,今天在rails3中,我们有同样丑陋的include方法。

即使在具有出色AREL的Rails3中,ActiveRecord也不是Rails的最佳选择。您可能会说“哇,新的gem metawhere允许编写像Article.where(:title.matches => 'Hello%', :created_at.gt => 3.days.ago)这样的漂亮代码”。但是,等等... DataMapper开箱即用!也许不是将ActiveRecord修改为看起来像DataMapper更好,而是扩展并支持更好的orm?可以在http://datamapper.org/中找到有关DataMapper的更多详细信息。

我认为,以后的发行版中的rails应该允许我们选择要使用的orm,就像现在允许数据库选择一样。即使它只有一个选项“ActiveRecord”,人们也会搜索可用的替代方案。当我开始学习Rails时,我认为只支持ActiveRecord。后来我什至没有尝试寻找其他东西。

为什么我要写所有这些东西?我认为,我们需要更加关注这个不错的ORM。如果您是某个受欢迎或不太受欢迎的gem的开发人员,请考虑添加对DataMapper的支持。 DataMapper社区应从ActiveRecord或另一个ORM编写一些迁移指南,并保持文档为最新,您可能会为他们提供帮助。对于我来说,DataMapper社区需要更多的人,您可能是其中之一。
此ORM的唯一缺点是缺少文档,您可能会有所帮助。

那么您对此有何看法?

最佳答案

Rails 3允许您使用Datamapper,只是默认情况下不使用。您确实想将datamapper与rails 3一起使用。

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

Rails允许您选择,甚至可以使用--skip-active-record选项。 :)(可能不是很简单,但是在那里。

是的,Datamapper非常棒。 :)

关于ruby-on-rails - 使用DataMapper而不是ActiveRecord,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5351338/

10-12 07:29