我想查询我的数据库中某天创建的任意模型的对象,这样做的好方法是什么?
在sql查询中,我使用以下内容查询昨天创建的对象。
其中(created_at AT TIME ZONE'EDT')> (现在()AT TIME ZONE'EDT'):: DATE - 1 和(在时区'EDT'创建时)< (现在()AT TIME ZONE'EDT'):: DATE
我想在使用ActiveRecord调用的ruby中做同样的事情。
谢谢!
答案 0 :(得分:3)
作为范围的示例,适用于今天创建的所有项目:
scope :created_today, -> { where('created_at between ? AND ?', Time.zone.now.beginning_of_day, Time.zone.now.end_of_day) }
的更多信息
答案 1 :(得分:-1)
我会对数据库进行强制转换并选择当前日期,而不是使用范围进行。您可以使用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')