0

我想在我的数据库中查询在某一天创建的任意模型的对象,有什么好方法呢?

在 sql 查询中,我使用以下内容查询昨天创建的对象。

其中 (created_at AT TIME ZONE 'EDT') > (now() AT TIME ZONE 'EDT')::DATE - 1 和 (created_at AT TIME ZONE 'EDT') < (now() AT TIME ZONE 'EDT'): :日期

我想用 ActiveRecord 调用在 ruby​​ 中做同样的事情。

谢谢!

4

2 回答 2

3

一个示例,作为一个范围,适用于今天创建的所有项目:

scope :created_today, -> { where('created_at between ? AND ?', Time.zone.now.beginning_of_day, Time.zone.now.end_of_day) }

PostgreSQL 网站上的更多信息

于 2013-11-01T19:18:57.043 回答
-2

我会在数据库上进行演员表并在那里选择当前日期,而不是使用范围进行。您可以使用 DATE(created_at) 执行此操作(将导致“2013-11-01”)然后将参数注入其中:

Model.where("DATE(created_at) = ?", Date.today)

如果在更多地方使用它,那么最好按照 Morner 的建议创建一个范围:

scope :created_today { where("DATE(created_at) = ?", Date.today) }

名称:

scope :created_today_with_name lambda do |name| 
  where("DATE(created_at) = ? AND name = ?", Date.today, name)
end

或链接它:

scope :created_today_with_name lambda do |name| 
  where("DATE(created_at) = ?", Date.today).where(name: name)
end

然后将其称为:

Model.created_today_with_name('Joe')
于 2013-11-01T19:19:17.717 回答