首页
学习
活动
专区
工具
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 也会提高你日常效率。

1K20
  • 关于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 也会提高你日常效率。

    92930

    用 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 也会提高你日常效率。

    1.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 也会提高你日常效率。 ?

    1.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 也会提高你日常效率。

    97310

    关于 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 也会提高你日常效率。

    1K30

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

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

    1.8K70

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

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

    59620

    【愚公系列】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)中默认不使用。

    94020

    01 . GitLab简介及环境部署

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

    4.1K63

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

    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.2K20

    如何在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.9K00

    我们如何转型微服务?

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

    89680

    Strikingly 团队2017技术展望

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

    2.1K00

    总结Web应用中常用的各种Cache

    在Rails里面内置了fresh_when这个方法,一行代码就可以完成: class ArticlesController def show @article = Article.find...里面指定fresh_when以外,rails框架默认使用Rack::ETag middleware,它会自动给无etag的response加上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 请求的方法。可维护性要求软件不断发展。

    82630

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

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

    94220
    领券