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

为什么在Rails 3.1上使用带范围的合并方法不再有效?

在Rails 3.1中,带范围的合并方法不再有效的原因是Rails 3.1引入了Active Record的新查询方式,称为Arel。Arel是一个更强大、更灵活的查询构建器,它提供了一种更简洁、更易于理解的方式来构建复杂的数据库查询。在Rails 3.1中,带范围的合并方法已经被弃用,因为它们与Arel的设计原则不符。

为了解决这个问题,您可以使用以下方法:

  1. 使用where方法代替带范围的合并方法。例如,如果您之前使用了User.scoped_by_age(18),现在可以使用User.where(age: 18)
  2. 使用Arel构建更复杂的查询。例如,如果您需要在查询中使用多个条件,可以使用Arel构建查询,如下所示:
代码语言:ruby
复制
users = User.arel_table
users_with_age_18_and_name_john = users.where(users[:age].eq(18).and(users[:name].eq('John'))).to_a
  1. 如果您仍然需要使用带范围的合并方法,可以将其添加到您的模型中。例如,在User模型中添加以下代码:
代码语言:ruby
复制
scope :scoped_by_age, ->(age) { where(age: age) }

然后,您可以像以前一样使用User.scoped_by_age(18)

总之,带范围的合并方法在Rails 3.1中不再有效,因为它们与Arel的设计原则不符。您可以使用where方法或Arel构建更复杂的查询来替代它们。如果您仍然需要使用带范围的合并方法,可以将其添加到您的模型中。

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

相关·内容

用 Git 和 Github 提高效率 10 个技巧

范围过滤提交记录: master@{time}..master 你可以创建一个对比页面通过使用URL github.com/user/repo/compare/{range}。...范围(range)可以是两个SHA例如sha1…sha2或者两个分支名称例如master…my-branch。范围同时也非常智能支持使用时间作为关注点。...关注用户 合并请求、问题或者任何评论中中提到用户会使用户关注全部后续通知: ? 自动链接 合并请求、问题、或者任何评论中,sha和问题码(例如:#1)会被自动链接。...假如你一个功能分支,输入: git log ..master 返回全部master分支历史记录,包括未被合并到当前分支提交记录。...GitHub,另一个方面,Git基础提供便利团队合作特性。有能力使用GitHub也会提高你日常效率。

1.4K20

关于 Git 和 GitHub,你所不知道十件事

3、按范围过滤提交记录: master@{time}..master 你可以创建一个对比页面通过使用 URL github.com/user/repo/compare/{range}。...范围 (range) 可以是两个 SHA 例如 sha1…sha2 或者两个分支名称例如 master…my-branch。范围同时也非常智能支持使用时间作为关注点。...8、关注用户 合并请求、问题或者任何评论中中提到用户会使用户关注全部后续通知: ? 9、自动链接 合并请求、问题、或者任何评论中,sha 和问题码 (例如:#1) 会被自动链接。...例如,一个功能分支,输入 > git branch --no-merged 返回未合并到该分支分支列表。...了解它可以直接让你更有效率并成为一个更有才华程序员。GitHub,另一个方面, Git 基础提供便利团队合作特性。有能力使用 GitHub 也会提高你日常效率。

98220

关于Git和Github你不知道十件事

3、按范围过滤提交记录: master@{time}..master 你可以创建一个对比页面通过使用 URL github.com/user/repo/compare/{range}。...范围 (range) 可以是两个 SHA 例如 sha1…sha2 或者两个分支名称例如 master…my-branch。范围同时也非常智能支持使用时间作为关注点。...8、关注用户 合并请求、问题或者任何评论中中提到用户会使用户关注全部后续通知: ? 9、自动链接 合并请求、问题、或者任何评论中,sha和问题码(例如:#1)会被自动链接。...例如,一个功能分支,输入 > git branch --no-merged 返回未合并到该分支分支列表。...了解它可以直接让你更有效率并成为一个更有才华程序员。GitHub,另一个方面, Git 基础提供便利团队合作特性。有能力使用 GitHub 也会提高你日常效率。

90430

用 Git 和 Github 提高效率 10 个技巧!

范围 (range) 可以是两个 SHA 例如 sha1…sha2 或者两个分支名称例如 master…my-branch。范围同时也非常智能支持使用时间作为关注点。...如果你要给你队友分享一段代码是非常方便: 8、关注用户 合并请求、问题或者任何评论中中提到用户会使用户关注全部后续通知: 9、自动链接 合并请求、问题、或者任何评论中,sha和问题码(例如:#1...假如你一个功能分支,输入: > git log ..master 返回全部 master 分支历史记录,包括未被合并到当前分支提交记录。...这个命令对合并前检查非常有用。例如,一个功能分支,输入 > git branch --no-merged 返回未合并到该分支分支列表。...了解它可以直接让你更有效率并成为一个更有才华程序员。GitHub,另一个方面, Git 基础提供便利团队合作特性。有能力使用 GitHub 也会提高你日常效率。

1K20

用 Git 和 Github 提高效率 10 个技巧!

3、按范围过滤提交记录: master@{time}..master 你可以创建一个对比页面通过使用 URL github.com/user/repo/compare/{range}。...范围 (range) 可以是两个 SHA 例如 sha1…sha2 或者两个分支名称例如 master…my-branch。范围同时也非常智能支持使用时间作为关注点。...8、关注用户 合并请求、问题或者任何评论中中提到用户会使用户关注全部后续通知: ? 9、自动链接 合并请求、问题、或者任何评论中,sha和问题码(例如:#1)会被自动链接。...例如,一个功能分支,输入 > git branch --no-merged 返回未合并到该分支分支列表。...了解它可以直接让你更有效率并成为一个更有才华程序员。GitHub,另一个方面, Git 基础提供便利团队合作特性。有能力使用 GitHub 也会提高你日常效率。 ?

1K10

用 Git 和 Github 提高效率 10 个技巧!

3、按范围过滤提交记录: master@{time}..master 你可以创建一个对比页面通过使用 URL github.com/user/repo/compare/{range}。...范围 (range) 可以是两个 SHA 例如 sha1…sha2 或者两个分支名称例如 master…my-branch。范围同时也非常智能支持使用时间作为关注点。...8、关注用户 合并请求、问题或者任何评论中中提到用户会使用户关注全部后续通知: ? 9、自动链接 合并请求、问题、或者任何评论中,sha和问题码(例如:#1)会被自动链接。...这个命令对合并前检查非常有用。例如,一个功能分支,输入 > git branch --no-merged 返回未合并到该分支分支列表。...了解它可以直接让你更有效率并成为一个更有才华程序员。GitHub,另一个方面, Git 基础提供便利团队合作特性。有能力使用 GitHub 也会提高你日常效率。

95210

关于 Git 和 GitHub,你所不知道十件事

范围过滤提交记录: master@{time}..master 你可以创建一个对比页面通过使用 URL github.com/user/repo/compare/{range}。...范围 (range) 可以是两个 SHA 例如 sha1…sha2 或者两个分支名称例如 master…my-branch。范围同时也非常智能支持使用时间作为关注点。...关注用户 合并请求、问题或者任何评论中中提到用户会使用户关注全部后续通知: ? 9. 自动链接 合并请求、问题、或者任何评论中,sha 和问题码 (例如:#1) 会被自动链接。...例如,一个功能分支,输入 > git branch --no-merged 返回未合并到该分支分支列表。...了解它可以直接让你更有效率并成为一个更有才华程序员。GitHub,另一个方面, Git 基础提供便利团队合作特性。有能力使用 GitHub 也会提高你日常效率。

97730

win10下vagrant+centos7 rails虚拟开发机配置流程

此文写于2017.8.21 写本文前,笔者已经尝试了多种其他替代方法,例如wmware虚拟机安装kylin。然而发现总是还有各种问题。经大佬指点安装了virtualbox + vagrant。...) 如果网络条件允许(例如在中国大陆之外)的话,可以直接按照页面上方法配置。...) gem install rails 确认安装完毕后,运行 gem install bundler 7、安装mariadb和redis 其实mariadbcentos安装非常简单,直接 yum...(关于数据库设置密码等问题,可以自行百度相关资料,此处不再赘述) redis的话,确保EPEL安装了情况下,也可以直接yum -y install redis,系统服务也配置好了,非常方便。...2、部分软件包无法找到 这种情况是由于centos7本身软件包并不多。

1.7K70

【愚公系列】2022年04月 Python教学课程 71-DRF框架之内置路由

文章目录 一、路由 1.SimpleRouter 1.1 基本使用 1.2 合并使用 1.3 额外操作路由 2.DefaultRouter 一、路由 对于视图集ViewSet,我们除了可以自己手动指明请求方式与视图方法...视图集可以通过使用装饰器修饰方法来标记用于布线额外操作。...例如,给定类方法:action() from myapp.permissions import IsAdminOrIsSelf from rest_framework.decorators import...将生成以下路由: 网址模式:^users/{pk}/set_password/$ 网址名称:'user-set-password' 默认情况下,URL 模式基于方法名称,URL 名称是方法名称和连字符方法名称组合...例如: router = SimpleRouter(trailing_slash=False) 尾随斜杠 Django 中是约定俗成,但在其他一些框架(如 Rails)中默认不使用

91920

“逃离”单体,GitHub微服务架构实践

如今,我们平台上已经有超过 5000 万名开发人员,每年有超过 8000 万个 pull 请求合并,全球各大洲有超过 1 亿个代码存储库。 如你所见,这个 单体架构 已经我们走得很远。...让每个人在参与开发之前都学习 Ruby,让所有人都在同一个单体代码库上进行开发,不再是扩展 GitHub 最高效、最优化方法。根据康威定律,任何组织设计系统,其结构都是对组织沟通结构复制。...GitHub 有超过 5000 万用户和 1 亿个存储库,在这样规模下,功能组可能会变得非常大。这时,分区键就派上用场了。例如,一种简单方法是根据数值范围将不同用户分配到不同数据存储。...当前 Rails 应用程序(即我们单体)使用 Twirp(这是一个 gRPC 风格服务到服务通信框架)和它通信,依赖方向是由内到外。...由于服务不再是运行在一台服务器,所以考虑网络通信中延迟和故障非常重要。对于大部分暂时网络问题,使用一种简单重试机制,定义好重试频率和最大重试次数,就足够了。

51120

01 . GitLab简介及环境部署

运维人员之后检查发现,网站宣称和配备多项备份措施均未正常运作或难以利用。GitlabYouTube直播了恢复数据过程。...网站最终丢失了最后6小时数据库数据(包括问题、合并请求、评论、片段等,不含代码库) GitLab是由 GitLab Inc.开发,使用 MIT 许可证基于网络 Git 仓库管理工具开源项目,且具有...wiki 和 issue 跟踪功能,使用 Git 作为代码管理工具,并在此基础搭建起来 web 服务。...GitLab原理: GitLab是一个用于仓库管理系统开源项目,使用Git作为代码管理工具,并在此基础建立web服务....获取权限,进一步提升安全性 # 4 可以设置获取到团队整体改进进度 # 5 通过innersourcing让不在权限范围内的人访问不到该资源 GitLab部署 环境清单 # CentOS 7.3 #

3.8K63

不要学习“网红”编程语言

Ruby on Rails (也简称为 Rails)是一个使用 Ruby 编程语言开源 Web 应用程序框架,曾一度大受欢迎,Rails 出现极大推动了 Ruby 语言发展。...Groupon 工程师 Sean McCullough 2013 年一个技术会议讲道,“要在 Groupon.com 整个网页更改一种颜色,估计需要三个月时间。...这些架构解决能力和适用范围都比较差,所以无论使用哪种语言,Rails 本身流行度下降甚至根源上来自 MVC 和 RAD 方法逐渐衰落。...Ruby 仍然保持着 2005 年时出色开发体验,而且体验只会越来越好。Rails 也仍是实现原型设计演示方法,能帮助大家几天之内更稳妥地构建起最小可行性产品。...开发者们关注和精力就那么多,流向了其他地方、自然也就不再流向这里。

2.1K30

Ansible和Docker作用和用法

除了 Python 和 SSH,Ansible 不再依赖其他软件,远端主机上不需要部署代理,也不会留下任何运行痕迹。...更厉害是,它提供一套内建、可扩展模块库文件,通过它你可以控制所有的一切:包管理器、云服务供应商、数据库等等等等。 为什么使用 Docker?...先聊聊 git 吧,它快照功能让它可以以最有效方式发布代码,Docker 处理方法与它类似。它保证应用可以无视主机环境,随心所欲地跑起来。...Docker 容器内运行 Rails 应用 没有本地 Docker 镜像,从零开始部署一个中级规模 Rails 应用大概需要100个 gems,进行100次整体测试,使用2个核心实例和2GB内存情况下...我2014年1月伦敦 Docker 会议讲过这个主题,已经分享到 Speakerdeck了。

2.1K20

【威胁通告】GitLab EECE 信息泄露漏洞(CVE-2020-6832)威胁通告

GitLab是一个用于仓库管理系统开源项目,使用Git作为代码管理工具,并在此基础搭建起来web服务。...使用GitLab项目导入功能时,利用该漏洞可从私有项目中获取到敏感信息,请相关用户进行防护;更多漏洞信息预计将在30天左右公布官方问题跟踪系统。...版本检测 相关用户可通过版本检测方法判断当前应用是否存在风险。...使用如下命令可查看当前GitLab版本: cat /opt/gitlab/embedded/service/gitlab-rails/VERSION ?...若当前版本受影响范围内,则可能存在安全风险。 4漏洞防护 4.1 官方升级 目前官方已在最新版本中修复了该漏洞,用户可通过版本升级进行防护。

81820

如何在Ubuntu 18.04使用RVM安装Ruby on Rails

要学习本教程,您需要一个Ubuntu 18.04服务器具有sudo权限非root用户。...没有服务器同学可以在这里购买,不过我个人更推荐您使用免费腾讯云开发者实验室进行试验,学会安装后再购买服务器。 安装 使用RVM安装Ruby on Rails最快方法是运行以下命令。...让我们首先通过搜索列出Rails有效版本: gem search '^rails$' --all 接下来,我们可以安装我们所需Rails版本。...gem install rails -v rails_version 我们可以通过创建gemsets然后使用普通gem命令Rails中安装Rails,这样可以让每一个Ruby能够使用各种Rails...如何卸载RVM 如果您不再希望使用RVM,可以先删除.bashrc文件中脚本调用然后删除RVM文件来卸载它。

8.8K00

我们如何转型微服务?

SoundCloud时, 曾经负责把一个巨石架构 Ruby on Rails 应用迁移到微服务。这个故事技术层面, 我做过多次演讲并且 SoundCloud 技术博客发表过系列文章。...使用/静态数据将设计转换成适当基于浏览器体验后, 工程师将记下他们需要 Rails API 在工作中变化。然后进入Pivotal Tracker, 这是App团队工具。...经过这么多年提倡和使用trunk-based-development, 我迫不及待地想知道像 SoundCloud 和 Github 这样成功公司是如何使用这种非常不同方法。...我们有很多功能, 不同客户端应用程序, 不同类型用户, 同步和异步工作流, 巨大规模。代码库实现并反映了现在复杂平台许多组件。 4、为什么需要一个单一代码库来实现许多组件?由于范围经济性。...我们讨论了使用 Rails引擎和其他各种工具来实现这一点, 它看起来有点像这样: ? 部署方面, 我们需要确保可以单独部署某个功能。

83880

Strikingly 团队2017技术展望

为了应对多客户端(Web, iOS, Android)挑战,2016 年我们团队层面和技术栈做了很大胆尝试:我们把前端团队和移动端合并了,组成了客户端团队。...这次变革让我们体会到了统一技术栈开发效率、团队协作和知识共享等方面带来提升。 实际合并过程是2016年5月开始,在此之前我们做了很久铺垫准备。...鉴于 GraphQL 目前社区生态已经比较完善了,2017年我们将开始使用 GraphQL 渐渐替换掉内部已有的 RESTful API。...关于这一部分详细内容可以参考我们团队资深 Rails 工程师 Florian Dutey RubyConf Taiwan 2016 演讲 “Large scale Rails applications...我们除了生产环境之外,还有多个沙盒环境供线上测试使用。为了保证测试有效性,这些沙盒环境都要做到尽量跟生产环境一致。

2K00

总结Web应用中常用各种Cache

Rails里面内置了fresh_when这个方法,一行代码就可以完成: class ArticlesController def show @article = Article.find...里面指定fresh_when以外,rails框架默认使用Rack::ETag middleware,它会自动给无etagresponse加上etag,但是和fresh_when相比,自动etag能够节省只是客户端时间...整页缓存 Nginx缓存在处理参数资源或者有用户状态请求时候,就非常难以处理,这个时候可以用到整页缓存。...和caches_action不同,rails自带片段缓存是不支持条件,比如说我们想未登陆用户给他用片段缓存,而登陆用户不使用,写起来就很麻烦,我们可以改写一下helper就可以了: def..., "xxx", :expires_in => 1.day do 小技巧2:关联对象自动更新 常使用对象update_at时间戳来作为cache key,可以关联对象加上touch选项,自动更新关联对象时间戳

4.7K40

不要让框架控制你项目,过度依赖框架会害了你

而你只能像一只忠实小狗一样默默跟随。 我敢肯定,大多数框架创始人对用户没有任何敌意,他们发自真心关心用户,而DHH肯定也希望用户使用Rails时感受到快乐。...作为用户(即使用框架开发人员),你可以继承类,或者采用mixin方式使用其他类、模块或函数代码。 例如,Rails中,你只需要继承“一个模型”,就可以让对象公开大量方法。...保存费用方法叫做expenses_repository.add(expense),其背后可能使用了世界最复杂分布式数据库框架,或者使用了一个漂亮框架将费用推送到某个在线会计工具中。...这样框架已经失去了意义,很快就会变成库。 为什么没有这样框架? 首先,我们基本思路是不依赖于框架,但构建框架却不使用框架,这与框架本身目标背道而驰。...当从基于 Web 服务转而使用原生移动应用服务时,你所需要不再是HTML/CSS/asset,而是序列化和处理 JSON 请求方法。可维护性要求软件不断发展。

72730
领券