Rails 中按月和年对记录进行分组

2024-02-21

我使用的是 Ruby 1.9.2、Rails 3.0.x,并且使用 MySQL DB。我有一个消息模型,每天都可以发布新消息。

我有一个索引操作,我想在其中显示按月份和年份分组的这些消息。这主要用于过滤消息。

我的查询如下所示:-

@active_msgs = Messages.where('expiry > ?', Time.now).order('created_at DESC')

我在Rails中使用了group_by函数,参考后这个帖子 https://stackoverflow.com/questions/902974/grouping-by-week-month-etc-activerecord

我的分组查询是:-

@msgs_by_month = @active_msgs.all.group_by {|u| u.created_at.month }

我收到了一个名为@msgs_by_month 的哈希值。这帮助我按月对消息进行分组,但我需要考虑年份,形成唯一的密钥,因为它可以帮助我区分例如 2011 年 9 月和 2012 年 9 月。

我当前的密钥仅是 Hash[Month] 类型(例如 Hash[9] => 表示 9 月,我可以显示所有适当的值)。我如何获得月、年类型的唯一键,我可以轻松地循环显示按创建月和年分组的所有记录。

谢谢

EDIT:-

我猜想做到这一点的一种方法是使用created_at.to_dateapi, 提供here http://api.rubyonrails.org/classes/Time.html。我只是想知道我怎样才能剔除这一天 from created_at.to_date得到一个unique月份和年份组合键这可以使用 group_by 函数.


In SQL:

select * from messages group by year(created_at), month(created_at);

在轨道中:

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

Rails 中按月和年对记录进行分组 的相关文章

随机推荐

  • 致命错误:使用 mongodb php 驱动程序 1.1.2 和 PHP 7.0.2 时未找到“MongoDate”类 - Laravel 5.1

    我正在尝试将 MongoDB 配置为与虚拟 Ubuntu 14 04 计算机上的 Laravel 5 1 Homestead 实例配合使用 我能够使用以下命令成功安装支持 PHP 7 0 的最新版本 MongoDBsudo pecl ins
  • 错误:包 javax.servlet 不存在

    我试图按照以下指南在我的 Web 应用程序中使用 jsf 2 实现登录过滤器 https stackoverflow com tags servlet filters info https stackoverflow com tags se
  • Java 字符串用“.”分割(点)[重复]

    这个问题在这里已经有答案了 为什么这段代码的第二行会抛出ArrayIndexOutOfBoundsException String filename D some folder 001 docx String extensionRemove
  • 如何登录? Django TastyPie 与 ApiKeyAuthentication 实际认证流程

    我有一个 Adob e Air 移动应用程序 可以通过 TastyPie 与 Django 进行通信 要使用该应用程序 人们必须先注册 因此他们必须提供他们的电子邮件和密码 之后他们将能够 登录 我认为最好的主意是 在输入成功的用户名 密码
  • 快速构建 error_if_any_output_files_are_specified_they_all_must_be

    当转换为在 Xcode 10 上使用新的构建系统时 我的几个扩展目标的输出中出现以下错误
  • 如何计算SQL Server 2008中记录之间的时间

    对于 sql 2008 中的审计表 我需要计算每个订单在给定步骤中的时间 表示为新列 Old New Time Entered Order Number NULL Step 1 4 30 12 10 43 1C2014A Step 1 St
  • 为什么 0 除以 0 会出错?

    我在代码中进行的计算中遇到了这个问题 如果除数也为 0 则除数为 0 在我的代码中 对于这种情况我返回 0 我想知道 虽然除以零通常是未定义的 但为什么不为这种情况破例呢 我的理解为什么除以零是未定义的基本上是它不能逆转 然而 我在 0 0
  • 在 asp.net 中不使用 ScriptManager 从 JavaScript 调用 WebServices

    我已经为我的 Asp net 项目创建了一个 Web 服务 目前我正在通过引用中的服务从 JavaScript 访问该服务ScriptManager 但我不想添加ScriptManager这样我就可以在任何 HTML 页面中使用它 好的 因
  • 雪花 - 横向不能位于连接的左侧

    我有一个变体数据类型 我正在对其执行横向展平 但随后我需要左连接其中一个 json 元素 以从 Snowflake 中的另一个关系表中查找相应 ID 的值 当我这样做时 它会给我错误 横向视图不能位于连接的左侧 这是没有意义的 因为如果我不
  • 在 varchar 字段而不是数字字段上使用 BETWEEN ?

    我正在使用 ColdFusion 8 和 SQL Server 2008 R2 我正在尝试查询一列值以获取值在一定范围内的行 该列应该是数字 但事实并非如此 它被设置为 varchar 由其他人 有 100 000 多行数据 这是数据的假样
  • 使用正则表达式删除脚本标签

    我正在尝试使用我在该网站中找到的正则表达式 但它似乎不起作用 有任何想法吗 输入字符串 sFetch 123456 Regex sFetch Regex Replace sFetch
  • 将存储为文本数据类型的数字转换为 int

    我有一个导入结果的数据库 数据库是可交付的 我没有自己进行导入 也无法访问原始数据来自己进行导入 也就是说 有一个整数值被导入到文本数据类型中 所有存储的值都是有效整数 我不断得到 Explicit conversion from data
  • Ionic 3 - 键盘无缘无故地将内容向上推,并超越其他内容

    我正在 Ionic 中开发一个简单的应用程序 我有一个问题 键盘将我的输入字段向上推到另一个 div 上 而键盘有足够的空间 我该如何解决 我已经在互联网上浏览过 但无法找到解决我的问题的任何方法 发生的情况是这样的 正如您所看到的 文本在
  • 来自 POST 的 res.redirect

    由于某种原因 登录完成后我无法重定向到 blog 在我的登录控制器中 我有以下内容 module exports post function req res var login req body login if login req bod
  • sudo: python: 找不到命令

    我要实现sudo python找到Python 3 我遇到了一个奇怪的问题 在终端中输入python version给了 3 6 但是sudo python version给了2 7 经过尝试一些事情后我终于卸载了 2 7sudo apt
  • jQuery 用于获取表行上的 Click 事件

    我有下表 table tr class rows td cell1 td td cell2 td tr table 如果我点击了 如何设置警报消息any of the column of 使用jquery 您可以使用委托来获得更好的性能 它
  • JavaScript 中这个东西是什么?

    考虑 var something wtf null omg null 自从我上次使用 JavaScript 编程以来 我的 JavaScript 知识仍然非常零碎 但我想我现在已经重新学习了大部分知识 除了这个 我不记得以前见过这个 它是什
  • 如何映射对象的键以使 JSON 更容易在 React 中处理

    如果我有这个 JSON name Active user config status active name Paused user config status active 然后我可以渲染一个 React 组件并轻松访问数据 render
  • jenkins pipelines:shell脚本无法获取更新的环境变量

    在 Jenkins 中 我想获取用户输入并传递给 shell 脚本以供进一步使用 我尝试设置为环境变量 但shell脚本无法获取最新值 旧值是echo pipeline agent none environment myVar someth
  • Rails 中按月和年对记录进行分组

    我使用的是 Ruby 1 9 2 Rails 3 0 x 并且使用 MySQL DB 我有一个消息模型 每天都可以发布新消息 我有一个索引操作 我想在其中显示按月份和年份分组的这些消息 这主要用于过滤消息 我的查询如下所示 active m