通过 attr_accessor 对模型对象进行排序

2023-12-29

当我必须对对象列表进行排序时,我认为 attr_accessor 具有与另一个相同的行为,但似乎有所不同:

  dataRecords = MyData.where("day = ?", Time.now.yesterday.strftime("%Y%m%d").to_i)
  dataRecords.each do |data|
    data.accessor_var = func(data.x, data.y)
  end
  @sortedData = dataRecords.order('accessor_var DESC')

但@sortedData 没有被排序...


您需要记住,当您将范围或订单应用于ActiveRecord::Relation数据从表中重新加载。这意味着当您循环它们并更改属性时,除非保存结果,否则更改将无法用于下一个作用域调用。

您可以使用sort_by相反,它将适用于内存中的对象而不是数据库。

选项 1:循环时保存(对于访问器可能没有多大用处!)

dataRecords = MyData.where("day = ?", Time.now.yesterday.strftime("%Y%m%d").to_i)
dataRecords.each do |data|
  data.accessor_var = func(data.x, data.y)
  data.save
end
@sortedData = dataRecords.order('accessor_var DESC') # Reload from table will include the saved values.

选项 2:排序依据

dataRecords = MyData.where("day = ?", Time.now.yesterday.strftime("%Y%m%d").to_i)
dataRecords.each do |data|
  data.accessor_var = func(data.x, data.y)
end
@sortedData = dataRecords.sort_by{|data| data.accessor_var}

Also, toro2k https://stackoverflow.com/a/17315705/385532一旦您了解情况,就会对您的排序进行一些很好的优化。

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

通过 attr_accessor 对模型对象进行排序 的相关文章

  • 使用rSpec 测试delayed_job 链的最佳方法是什么?

    目前 当我的代码中有一个延迟方法时 如下所示 CommentMailer delay deliver comments comment true 我在规范中写了这样的内容 dj mock DelayProxy CommentMailer s
  • python中如何对多个条件进行排序?

    我有一个包含子列表的列表 如下所示 result helo 10 bye 50 yeah 5 candy 30 我想用三个条件来排序 首先 按子列表索引 2 中的最高整数 然后按子列表索引 1 中单词的长度 最后按子列表第 1 个索引中的字
  • Rails 资源单数还是复数?

    我有一条搜索路线 我想将其设为单数 但是当我指定单数路线时 它仍然会生成复数控制器路线 这是应该的样子吗 resource search Gives me search POST search format action gt create
  • 如何在 Capybara 中 POST 到 URL?

    刚刚从 Cucumber Webrat 切换到 Cucumber Capybara 我想知道如何将内容 POST 到 Capybara 中的 URL 在 Cucumber Webrat 中我能够执行以下步骤 When I send to d
  • jQuery 表格排序

    我有一个非常简单的 HTML 表格 有 4 列 Facility Name Phone City Specialty 我希望用户能够排序设备名称 and City only 我如何使用 jQuery 进行编码 我发现了这个 我想我应该投入
  • 让 Rails 生产在端口 80 上运行

    我正在尝试让我的 Rails 应用程序在生产模式下运行 但遇到了一些困难 我正在使用 Passenger 和 apache 并运行 Ubuntu 12 04 我已经配置和创建了生产数据库 并设置了乘客 状态如下 rvmsudo passen
  • 仅针对 Rake 任务运行初始化程序

    我希望在执行 Rake 任务时运行某个初始化程序 但在运行 Rails 服务器时不运行 区分 Rake 调用和服务器调用的最佳方法是什么 Rake 允许您指定任务的依赖关系 最好的建议操作是将特定于 rake 的初始化放入其自己的任务中 而
  • 将查询字符串参数作为表单发布的一部分发送

    有没有办法捕获查询字符串并将其作为表单帖子的一部分发送 我正在使用 Rails 2 3 5 我的用户所在的页面有多个查询字符串参数 在此页面上 他们将提交一份表格 在接收帖子的操作中 我想知道这些查询字符串参数是什么 显然 它们不是作为邮件
  • 比较 ruby​​ 哈希值[重复]

    这个问题在这里已经有答案了 可能的重复 如何比较两个哈希值 https stackoverflow com questions 4928789 how do i compare two hashes 我有两个 ruby 哈希值 本质上是模型
  • 嵌套 has_one 关联的强参数

    我似乎遗漏了一些明显的东西 但我无法允许嵌套的属性has one协会 控制器 def create crossword Crossword new crossword params if crossword save render show
  • MySQL正则表达式:如何将字符串中的数字与\d匹配?

    我有一个专栏release date它以字符串格式存储日期 不是 DATETIME 格式 因为它们有时可以是任何其他字符串文字 我想根据给定的月份和年份查找任意日期的所有记录 尝试遵循但对我不起作用 gt Post find all con
  • 即使路由存在,Rspec 命名空间路由规范也会失败

    我在用着rspec rails 2 8 1 and 导轨3 1 3 我正在尝试测试 Admin ZonesController 的路由 我已经通过运行验证了浏览器中存在该路由rake routes 我没有使用 ActiveRecord 如果
  • 从logstash中的文件名获取事件的时间戳

    我们有一个将事件写入文件的进程 没有时间戳 文件名本身带有时间戳后缀 该时间戳应用于文件中的所有事件 现在 我尝试使用logstash的输入文件插件来解析该文件 有没有一种方法可以将文件名获取到字段 以便我可以使用 gsub 过滤器提取时间
  • 如何在清除排序描述后删除wpf网格排序箭头

    我单击网格标题对列进行排序 然后单击 重置 按钮以通过其集合视图清除排序描述 但排序箭头图标仍然保留在标题中 如何去除它 我在尝试弄清楚如何完全清除网格中的排序时遇到了这个问题 感谢 krishnaaditya 回答如何清除标题中的排序箭头
  • Ruby ActiveRecord 和 sql 元组支持

    ActiveRecord 是否支持 where 子句中的元组 假设底层数据库支持 结果 where 子句看起来像这样 where name address in John 123 Main St I tried Person where n
  • Rails 中的字母分页

    我正在寻找 Rails 的宝石用于字母分页 我希望我可以在结果中找到第一个字母的列表 我的意思是 如果没有以 a 开头的行 我不希望 a 显示在分页链接上 这种宝石已经存在了吗 提前致谢 这根本不难创建 例如 如果您有一个find 也许像
  • 对 std::vector 进行排序但忽略某个数字

    我有一个std vector
  • 在 Rails 项目中保存自定义异常定义的常规位置是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 当创建自己的自定义异常时 例如 class ThingExploded lt StandardError end class ThingIsMi
  • 无法解决 Rails 设置中的错误 - `LoadError: 无法加载此类文件 -- active_storage/engine`

    我正在尝试设置一个新的 Rails 应用程序 但遇到了一个我似乎无法解决的问题 当尝试跑步时rake db drop or rake db create我不断收到错误 LoadError cannot load such file acti
  • rake db 问题:迁移 -

    我无法为 Ruby on Rails 设置 MySQL 数据库 设置数据库并确保 config database yml 文件匹配后 我遇到了以下错误消息 U Rails alpha gt rake db migrate trace in

随机推荐

  • Paypal Express Checkout - 您多次调用 paypal.checkout.setup()

    我们正在使用 PayPal 快速结帐 JavaScript API http www paypalobjects com api checkout js http www paypalobjects com api checkout js
  • 内容安全策略不允许提交表单

    请我在这里需要帮助 我有一个表单要提交到另一个网址 但是当我尝试提交它时 它拒绝提交 我正在检查我的控制台 在 Chrome 上 我看到以下错误 resources2 aspx HCCID 75694719 culture en US ml
  • 我可以使用

    看到标签的用法很常见
  • 华为或vivo手机如何修复“应用程序感染病毒”

    我用我写的代码做了一个apk 当我使用华为或vivo手机下载apk时 浏览器显示提示 该应用程序感染了病毒 如何修复它 在华为设备中测试我的应用程序时 我遇到了类似的警告 我直接点击继续安装 华为似乎会将所有非应用商店的内容视为病毒 现在我
  • asp.Net MVC 2 应用程序上没有样式/图像

    问候 我的 ASP MVC 应用程序有一个小问题 在我的本地开发服务器上 一切正常 但当我尝试将应用程序发布到 IIS 7 0 服务器时 它只显示没有任何样式 标记 图像的纯页面 我将所有这些内容放在 Content 子文件夹中 但是当我尝
  • 循环文件记录

    我想知道是否有 C 的记录器库可以进行循环文件日志记录 我目前正在研究 log4C 但找不到足够的文档来说明它会进行循环日志记录 如果有人这样做过 请告诉我 Thanks 这是一个例子 这是一个删减版本 在我们的系统中 我们使用 vargs
  • 使用自定义可解码解码 Firestore 结构时获取 DocumentID

    我有以下结构 struct Vehicle Codable Identifiable DocumentID var id String var name String 只要我使用默认的 Swift 解码器 我就可以毫无问题地加载 Fires
  • 使用类路径参数运行 jar

    我可能错过了一些愚蠢的东西 但仍然如此 我创建了一个具有以下内部结构的 jar 文件 folder1 folder2 META INF 资源 其中folder1和folder2包含 class文件 而resources包含txt和png文件
  • 来自主 Gui 模块外部的 PyQt5 中断关闭事件

    我使用 Qt Designer 构建 GUI 并使用 pyuic5 将它们转换为 py 文件 我的最终目标是当变量 1 时中断用户关闭程序并向他们显示 您确定要关闭吗 类型对话框 如果所述变量 0 则正常关闭程序 我见过很多关于如何执行此操
  • C# 访问字段语法

    如果我只有要访问的变量的名称 我将如何访问对象的变量值 在 C 中 假设我有一个变量名称列表 表示为数组中的字符串 例如 我如何循环访问它们 我可以在 Actionscript 中执行类似以下操作 var arrayOfVariableNa
  • 如何从我的 makefile 中调用特定目标?

    a echo 1 b echo 2 c if d somefolder then how do I invoke target b here fi 我如何调用目标b内部目标c 根据我的情况 有点像antcall 如果你熟悉 ant 的话 说
  • 如何在 MiUi pre - Marshmallow 中请求权限?

    int permissionCheck ContextCompat checkSelfPermission mActivity Manifest permission RECEIVE SMS ActivityCompat requestPe
  • 如何确定应用程序中使用了哪些 JAR

    现有应用程序的类路径中有大量 JAR 文件 为了确定起见 最初必须有人添加所有 JAR 有些 JAR 显然没有被使用 我们已经删除了其中一些不需要的 JAR 没有造成任何问题 如何确定哪些 JAR 正在使用 哪些 JAR 不需要 除了试错法
  • Django 性能测试套件将报告指标(数据库查询等)

    我有一个复杂的 Django Web 应用程序 其中投入了很多人年的工作 有时可能需要优化 我可以使用 例如 django 的测试客户端编写几个常见的操作 流程的脚本 是否有一些程序 给定这样的 python 脚本 然后将运行 并报告各种
  • C++ 投掷类成员

    我有以下 C 代码 template
  • 查找数组中的重复元素?

    我看到一个面试题是这样的 数组中有一个数字重复 找到它 简单的解决方案如下 for int i 0 i
  • REST API 的试运行策略

    我正在寻找 REST API 的 试运行 操作的一些最佳实践 假设我有一个端点将资金从账户 A 转账到账户 B 我可以像这样发起转账 POST transactions amount 1000 how much to transfer so
  • jQuery 数据绑定 - 现在流行的插件是什么?

    我需要某种类型的 JS MVC DataBinding 解决方案 与实施 GMAIL Web 应用程序类似 消息索引和消息显示 在消息显示的位置 如果您修改消息 它会自动在消息索引中更新 我应该学习什么插件才能在不使用大量 jQuery 的
  • Tensorflow 中的入队和增量变量

    如何使张量流图将递 增的数字推送到队列 我这样做只是为了学习目的 所以我希望您保持它与我正在做的事情相似 并纠正我做错的事情 这是我的代码 import tensorflow as tf create queue queue tf Rand
  • 通过 attr_accessor 对模型对象进行排序

    当我必须对对象列表进行排序时 我认为 attr accessor 具有与另一个相同的行为 但似乎有所不同 dataRecords MyData where day Time now yesterday strftime Y m d to i