在不重新查询数据库的情况下重新排序 Rails 中的活动记录?

2024-03-28

例如,假设我有一个名为 Products 的模型,并且在 Products 控制器中,我有以下用于 Product_list 视图的代码来显示排序的产品。

@products = Product.order(params[:order_by])

想象一下,在产品列表视图中,用户可以使用下拉菜单按价格、评级、重量等进行排序。数据库中的产品不会经常变化。

我很难理解的是,每次用户选择新的 order_by 过滤器时,rails 是否必须进行查询,或者是否能够以某种方式缓存活动记录以在服务器端重新排序?有没有办法编写它,以便在用户排序时 Rails 不会重新查询结果? (即,如果产品表不经常更改,那么如果用户只想按不同的变量排序,则进行查询是没有意义的)

Thanks,


您可能正在寻找 sort_by 方法。它将允许您在服务器端对集合进行排序,而无需使用任何活动记录查询。

此代码结果:

@products = Product.all
@products = @products.sort_by {|product| product.name} # Ruby Sorting

应该是一样的

@products = Product.order(:name) # SQL sorting
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在不重新查询数据库的情况下重新排序 Rails 中的活动记录? 的相关文章

  • 在设计电子邮件主题中添加动态价值

    好吧 我看过很多关于自定义设计电子邮件主题的讨论 但似乎没有一个能解决我想要的问题 目前我的确认电子邮件主题为 确认您的 Qitch com 帐户 我想自定义此电子邮件主题并在其中添加用户名的动态值 这样如果用户ALEX注册一个帐户 他应该
  • 使用 %w[] 创建包含空字符串的数组

    创建包含空字符串的数组 a b c 不是一个空格字符串 使用 W我可以用 W a b c 我也可以连接数组 但是是否可以使用空字符串创建数组 w 几个选项 W a b c z W a b c lt lt 我知道这没有使用 w 语法 但为了更
  • 弃用警告:ActionView::Base 实例应使用查找上下文、赋值和控制器来构造

    我将应用程序从 Rails 5 2 迁移到 Rails 6 只剩下一件事要做 但我不知道如何做 我有这个弃用警告 弃用警告 ActionView Base 实例应使用查找上下文 赋值和控制器来构造 从 Users xxx xxxx app
  • 使用 Google Guava 进行不区分大小写的排序

    目前 我在两个不同的地方使用以下两段代码来创建一个排序的 不可变的列表 return Ordering natural immutableSortedCopy iterable and return Ordering usingToStri
  • Angularjs:排序在 Chrome 和 Firefox 浏览器中显示不同的结果

    您好 我在 chrome 和 firefox 浏览器中得到不同的数据排序结果 Firefox 显示正确的一个 HTML table class datatable thead tr th width 5 class Rank Rank nb
  • Rails:CSS 在开发和生产中似乎有所不同

    我有一个标准的 Rails 4 heroku 设置 有一点很奇怪 页面的不同元素在本地环境和生产环境中以不同的尺寸显示 例如 虽然 header height 设置为特定的像素值 但两个环境的高度不同 与内容的宽度相同 我将最大宽度设置为
  • gem 如何提供 Cucumber 功能和步骤定义?

    我有两个 Rails 项目 A 和 B 其中包含以下宝石 project A gem green theme path gt dev themes green theme gem devel tasks path gt dev themes
  • 在类中调用类方法

    我意识到这可能是一个幼稚的问题 但我仍然无法弄清楚如何在 Ruby 类中从另一个方法调用一个方法 即在 Ruby 中可以执行以下操作 class A def met1 end def met2 met1 call to previously
  • 使用 sidekiq 只执行众多重复作业之一?

    我有一个后台作业 在 MongoDB 上执行映射 归约作业 当用户向文档发送更多数据时 它会启动在文档上运行的后台作业 如果用户发送多个请求 它将启动同一文档的多个后台作业 但实际上只有一个需要运行 有没有办法可以防止多个重复实例 我正在考
  • Ruby IMAP IDLE 并发 - 如何解决?

    我正在尝试构建一个 目前是私有的 Web 应用程序 该应用程序将利用 IMAP IDLE 连接在人们到达时显示电子邮件 我很难弄清楚如何将其组合在一起 以及它如何与我的 Heroku RoR 服务器结合在一起 我编写了一个用于连接到 IMA
  • Rails 4.0 expire_fragment/缓存过期不起作用

    我一直在尝试使用 Rails 的缓存功能 但我无法使某些缓存片段过期 尽管它们似乎已过期 使用 Rails 教程网站中指出的 Russian Doll Caching 我正在使用此配置 我使release controller rb 控制器
  • 您推荐使用哪些工具来分析 Rails 应用程序? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我一直在寻找 Rails 的分析工具 我目前正在玩和测试 ruby prof 和 Railsbench 但我对使其工作所需的大量调整和修改
  • Flask:缓存静态文件(.js、.css)

    我真的找不到任何这方面的资源 那么如何将视图 函数的缓存与静态文件 即 css js 分开 我想将静态对象缓存一周 另一方面 我只需要缓存函数 视图几分钟 当我执行以下操作时 from flask ext cache import Cach
  • Spring Boot,使用 EhCache 进行缓存

    我需要在我的应用程序中缓存一些数据 我正在考虑使用 Ehcache 我有几个问题 Ehcache需要另外一台服务器吗 我需要其他客户端来使用 Ehcache 吗 Ehcache 如何与多个实例配合使用 是否有可能使用 Ehcache 创建类
  • 使用 Hibernate 作为 ORM 机制的 Web 应用程序中的 L1 和 L2 缓存有什么区别?

    我只想要一些有关使用 L1 缓存和 L2 缓存的标准用途的一般信息 我很好奇 因为我正在研究使用赤土陶器作为二级缓存的系统 并且我发现它也有一级缓存 L1 缓存是每个 Hibernate 会话都存在的缓存 并且该缓存不在线程之间共享 该缓存
  • 在 Ruby 中从一个数组减去另一个数组

    我有两个任务数组 创建和分配 我想从创建的任务数组中删除所有分配的任务 这是我的工作代码 但很混乱 assigned tasks user assigned tasks created tasks user created tasks Do
  • 使用 Assetic PHP 通过 RVM 安装后 Sass 损坏

    我正在尝试设置 Assetic PHP 资源编译器 并且它可以与 CoffeeScript Stylus 和 Less 一起使用 所有 NPM 包都运行良好 然而 对于 Sass 我遇到了问题 以下是我到目前为止所采取的步骤 我安装了 RV
  • Codekit文件权限问题(只读文件系统@dir_s_mkdir - /.sass-cache)

    出现以下错误 Compiling failed with this error Errno EROFS on line 239 of System Library Frameworks Ruby framework Versions 2 6
  • Rails 3 UJS 干客户端 + 服务器端表单验证

    使用 jQuery 进行表单验证就像向字段添加类名一样简单 使用 Rails 进行表单验证就像将条件放入控制器 和 或模型 中一样简单 我认为应该有一种方法可以编写一次验证并将它们应用到客户端和服务器端 我一直热衷于编写自己的 javasc
  • ruby 调试和黄瓜

    我在 Cucumber 中遇到了失败的情况 我想使用 ruby debug 来调试我的 Rails 控制器 但是 如果我将 调试器 添加到我想要中断的位置 它就不会停止 我尝试将 ruby debug 和 ruby gems 的 requi

随机推荐