首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么ActiveRecord::Relation要移除array_delegable?在Rails 5中?

ActiveRecord::Relation在Rails中是一个查询结果集的对象,它代表了一个数据库查询的结果。array_delegable是一个在Rails 4中引入的特性,它允许将Relation对象转换为数组,并且可以对数组进行各种操作,例如使用数组的方法和迭代器。

然而,在Rails 5中,array_delegable被移除了。这是因为在Rails 5中,为了提高性能和减少内存占用,Rails引入了一种新的查询执行引擎,称为ActiveRecord::QueryMethods。这个新的查询执行引擎使用了更高效的内部数据结构来表示查询结果集,不再需要将Relation对象转换为数组来进行操作。

移除array_delegable的好处是减少了内存占用和提高了查询性能。当我们使用Relation对象进行查询时,不再需要将其转换为数组来进行操作,而是直接使用QueryMethods提供的方法来操作查询结果集。这样可以避免不必要的数组转换和内存消耗。

总结起来,移除array_delegable是为了提高性能和减少内存占用。在Rails 5中,我们应该直接使用Relation对象的方法来操作查询结果集,而不是将其转换为数组。这样可以更高效地处理数据库查询,并且减少不必要的内存消耗。

推荐的腾讯云相关产品:腾讯云数据库(https://cloud.tencent.com/product/cdb)是腾讯云提供的一种高性能、可扩展的云数据库解决方案,适用于各种规模的应用场景。它提供了丰富的功能和灵活的配置选项,可以满足不同类型的数据库需求。腾讯云数据库支持主流的关系型数据库引擎,如MySQL、SQL Server、PostgreSQL等,可以方便地进行数据存储和管理。

注意:本回答中没有提及亚马逊AWS、Azure、阿里云、华为云、天翼云、GoDaddy、Namecheap、Google等流行的云计算品牌商。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Rails框架流行在他的设计理念

2、Convention Over Configuration --约定高于配置 Rails几乎成了敏捷web框架的代名词,Java社区的Grails,.NET开源项目Mono Rails和Subsonic...不过在他的地盘上开发,为什么要不按人家的规则做呢,况且人家的目录结构,命名规则以及URL到action的映射都很合理很清晰,Mix上会发布的asp.net mvc URL Routing上会有很大的增强...,MonoRail项目也加强URL Routing这块的内容,看来自己创建一套规则也容易。...SubSonic项目和Castle的ActiveRecord的子项目,由于.net静态语言的原因,动态特性的实现上没有RoR中那么灵活,它基于.net中的attribute来标识字段和关系,SubSonic...他们的设计模式都是ActiveRecordActiveRecord做CRUD很简单,每个对象可以有自己的Fetch,FetchByxxx方法,从开发者的角度看这些对象,它们知道如何加载和保存自己,对象自己来维护

1.9K50

PHP将死。何以为继?

就在我这个顽固的PHP分子正要把一个现有的Ruby on Rails代码库转换成PHP时,我要说这样的话。 历史重演 我认为PHP将亡,因为我以前见到过。大概十年之前,PHP灭掉了Perl。...Perl里,页面需要冗长的公式化 的CGI方式实现,而这些PHP里却可以用基本的、缺省的编程方式实现。...Active Record是一种模式,并不是Ruby固有的,Rails的最新版本里是可选择的,但是对它的使用和这种模式已经深入到了Rails的DNA里了。...我 之前曾解释过为什么我认为这数据库上的ORM不是个好做法,所以我不会再重复解释,但有一点我需要总结的就是你省去了手工写CRUD所获得的效能大于 ActiveRecord做傻事所损失的效能,要花时间搞清楚它是怎么工作的...Ruby on Rails很好,但并不比一个PHP之上的类似的MVC框架强多少,更别提由于Ruby自身的效率不高和ActiveRecord的ORM恶搞带来的双重 打击。

1.5K60

如何在Ubuntu 14.04上使用Puma和Nginx部署Rails应用程序

创建Rails应用程序 理想情况下,您已经拥有了部署的Rails应用程序。如果是这种情况,您可以跳过本节,并在跟随时进行适当的替换。...安装rbenv-vars插件 部署生产Rails应用程序之前,应使用环境变量设置生产密钥和数据库密码。...=production rake db:migrate 您还应该预编译资产: RAILS_ENV=production rake assets:precompile 测试您的应用程序是否有效,您可以运行生产环境...安装Puma以及任何未完成的依赖项,请运行Bundler: bundle Puma现已安装,但我们需要对其进行配置。 配置Puma 配置Puma之前,您应该查找服务器具有的CPU核心数。...rescue ActiveRecord::ConnectionNotEstablished ActiveRecord::Base.establish_connection(YAML.load_file

5.4K10

慢的不是 Ruby,而是你的数据库

此外,Rails 专注于 Web 开发。虽然你可以 Rails 中处理非 Web 相关的任务,但这毫无意义。Rails 的目标是处理 HTTP 请求 - 响应。...然而,这也导致 Rails 中性能成为一个问题,甚至比 Ruby 中更加突出。 因此,“堆栈” 指的是 “使用数据库的 Ruby on Rails”。...在对整个 Rails 进行全面基准测试之前,我们先来审视一下 Rails 中的 ORM:ActiveRecord。...如上所述,技术性能问题是由 Ruby 而不是 Rails 引起的。 ActiveRecordRails 中的实现,而非模式 per-sé)是对系统(关系数据库)的抽象,需要大量详细知识来保持性能。...这也是 Ruby 很少 Rails(和 / 或 Web)之外使用的原因之一。 [7] 令人惊讶的是,从内存中的 SQLite 中查找比从数据库中查找慢。

12130

大型项目如何选择ORM:Active Record 还是 Data Mappers

比如业务逻辑和存储逻辑是两个独立的模块,两者功能上不依赖,如果把两个完全独立的功能封装在一起会导致代码耦合,这也是面向对象程序设计时规避的。...话虽然这么说,但规定是死的,人是活的,实际项目中又不一样了。ActiveRecord实际项目中风驰电掣,发展迅猛,主流的编程框架基本都选择它作为ORM。...用ActiveRecord ORM的PHP框架有Laravel, Yii, CodeIgniter, CakePHP等。其他语言用的有 Ruby on Rails,Django等。...使用Data Mappers的框架数量相比ActiveRecord少很多,主要有Java Hibernate,PHP Doctrine,SQLAlchemy in Python,EntityFramework...一般项目初期会选择ActiveRecord,如果项目比较成功,有一天发现ActiveRecord优化起来很吃力,改造它的时候想到有Data Mappers,然后从ActiveRecord过度到Data

2.1K50

如何在Ubuntu 14.04上使用Git Hooks部署Rails应用程序

介绍 本教程中,我们将向您展示如何使用Git hooks自动将Rails应用程序的生产环境部署到远程Ubuntu 14.04服务器。...您还需要一个本地开发机器上的git存储库中管理的Rails应用程序。如果您没有并希望跟进,我们将提供一个简单的示例应用程序。 让我们开始吧!...准备你的Rails应用程序 您的开发机器上,很可能是您的本地计算机,我们将准备您要部署的应用程序。 可选:创建Rails应用程序 理想情况下,您已经拥有了部署的Rails应用程序。...#{shared_dir}/pids/puma.state" activate_control_app ​ on_worker_boot do require "active_record" ActiveRecord...rescue ActiveRecord::ConnectionNotEstablished ActiveRecord::Base.establish_connection(YAML.load_file

2.5K60

GitHub 关系型数据库垂直分库实践

十多年前,与当时的大多数 Web 应用程序一样,GitHub 也是一个使用 Ruby on Rails 开发的网站,它的大部分数据都保存在 MySQL 数据库中。...进行真正的数据库分表之前,我们先确保应用层面能够将表分开,并且不影响团队开发新功能或修改已有的功能。 为此,我们将数据库表按照领域进行分组,并使用 SQL Linter 来分清领域之间的边界。... Rails 应用程序中,这些信息保存在 db/schema-domains.yml 配置文件中,如下所示: gists: - gist_comments - gists - starred_gists...例如,用 ActiveRecord 的 preload 方法取代 includes 方法。 另一种比较有挑战性的情况是 has_many :through 关系导致需要连接来自不同模式领域的表。...结果被收集起来,用于分析哪些地方存在跨领域事务,这样我们就可以决定是否更新某些代码或修改我们的数据模型。 对于那些对事务一致性要求很高的地方,我们将数据抽取到同属一个模式领域的新表中。

1.5K11

开发项目管理工具redmine 原

为什么使用Redmine? 基于上面的多种特性,项目管理工作中,如任务分配、任务跟踪、项目权限管理等等带来很大的便捷性,使得工作进度、质量更加可控。...vim config/initializers/ar_innodb_row_format.rb ActiveSupport.on_load :active_record do module ActiveRecord...数据初始化: $ RAILS_ENV=production bundle exec rake redmine:load_default_data ## 该过程会以交互形式让用户选择语言环境变量,也可以执行该命令时直接指定环境变量...即, 新版本的Redmine启动后默认监听localhost,如果通过外网访问,需要在启动时指定其监听的ip。如果不指定,需要在本机配置代理(nginx/httpd)。.../bin/rails console production 进入ruby后操作: # 获取修改的用户 2.3.0 :001 > admin_user = User.find_by_login('admin

10K40
领券