ruby-on-rails - 使用 DataMapper 而不是 ActiveRecord

标签 ruby-on-rails ruby-on-rails-3 orm activerecord datamapper

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




10年前关闭。




DataMapper 的想法是 definitely better比 ActiveRecord。它有一个用于各种数据存储的 API,包括 RDBMS 和 NoSQL 存储。
DataMapper 比 ActiveRecord 聪明得多。它具有“战略热切加载”。此功能一手解决了“N+1 查询问题”。此外,它还允许延迟加载诸如 Text 属性之类的重字段。 DataMapper 允许您通过提供嵌套的条件散列来创建和搜索任何复杂的对象图。 ActiveRecods 不适合用于生产中的关联。 include 方法很丑陋且不可配置。 2010 年 10 月,乔希·西蒙兹 (Josh Symonds) 发出 patch for this method允许从预先加载中排除字段。但是这条路径被忽略了,今天在 rails3 中我们有同样丑陋的包含方法。

即使在具有出色 AREL 的 Rails3 中,ActiveRecord 也远非 Rails 的最佳形式。你可能会说“哇,那个新的 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 3 允许您使用 Datamapper,但不是默认情况下。如果您确实想在 rails 3 中使用 datamapper。就这样做

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/

相关文章:

ruby-on-rails - 找到 id = 1 的 Zombie 并将其存储在变量中

ruby - Rails -- 理解 db :migrate

java - 如何在Java中从sql模式生成orm映射类

cakephp 3.x 保存嵌套(深层)关联

ruby-on-rails - Rails md5 哈希、长臂猿和mailchimp

ruby-on-rails - 将 Ruby 时间戳转换为 Epoch 中的秒数并返回

ruby-on-rails - 在 Rails 4 中向模型添加属性

ruby-on-rails-3 - Assets 管道甚至不会尝试编译 SASS

CSS:如何缩进一个文本区域而不缩进另一个文本区域?

php - Codeigniter查询构建器类: How to correctly handle possible unexpected errors?