ruby - 遍历日期范围内给定日期的项目

标签 ruby ruby-on-rails-3

我有种感觉,这个问题以前有人问过,但我一直在搜索,但无法得出明确的描述。

我有一个 Rails 应用程序,用于保存在特定日期(如生日)发生的项目。现在我想创建一个 View ,它创建一个表(或其他东西,div 也可以),它声明一次指定的日期,然后一个一个地迭代相关的项目。

项目有一个日期字段,当然,与单独表格或其他内容中的日期无关。

我当然可以查询数据库约 30 次(因为我想要表示一个月的项目),但我认为它看起来很难看并且会大量重复。我希望结果看起来像这样(暂时将其视为一个包含两列的表格):

Jan/1 | jan1.item1.desc
      | jan1.item2.desc
      | jan1.item3.desc
Jan/2 | jan2.item1.desc
      | etc.

所以我想我需要知道两件事:如何构建正确的查询(但它可能像 Item.where("date > ? < ?", lower_bound, upper_bound)) 一样简单,以及如何将其转换为 View 。

我还考虑过一个散列,其中包含每一天的键和一个值数组,但我必须像上面那样构造(重复),我认为这不是很优雅。

使用 GROUP BY与其他查询相比,似乎没有什么不同(当然,除了项目的分组)。只是一组对象,但我可能做错了。

抱歉,如果这是一个基本问题。我对这个领域(以及一般的编程)还比较陌生。

最佳答案

如果您正在制作日历,您可能希望GROUP BY date:

SELECT COUNT(*) AS instances, DATE(`date`) AS on_date FROM items GROUP BY DATE(`date`)

这假设您的列字面上称为 date,这被视为 SQL 保留字,这可能是个坏主意。如果是这种情况,无论何时使用它,您都需要对其进行转义,在 MySQL 表示法中使用 ``` 。 Postgres 和其他人使用不同的方法。

对于范围内的实例,您可能需要的是 BETWEEN 运算符:

@items = Item.where("`date` BETWEEN ? AND ?", lower_bound, upper_bound)

关于ruby - 遍历日期范围内给定日期的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14445530/

相关文章:

ruby - 在 ruby​​ 1.9.3 上安装 iconv 失败

ruby-on-rails - ActiveRecord 查询中的日期时间算法 (PostgreSQL)

javascript - 如何为元素分配 HTML id 以及如何将 JavaScript 应用于它们?

ruby-on-rails - 无法运行 Rails 服务器

Ruby 与 PostgreSQL - 插入数据库的 JSON 字段

ruby - Ruby 中的 RAII(或者,如何在 Ruby 中管理资源)

ruby - 是否可以在方案中制作切换功能?

ruby-on-rails-3 - webrat_steps.rb 丢失

ruby-on-rails - Rails 3.2 引擎布局

ruby - SSL 验证错误 Ruby