如何使用Ruby on Rails查找今天,昨天等的记录?

我想找到所有的记录,比如Posts,今天用Ruby on Rails创建,然后是昨天创建的所有post,等等……我该怎么办?

谢谢,

凯文

试试这个:

#Today Posts.find(:all, conditions: { :created_at => Date.today...Date.today + 1 }) #Yesterday Posts.find(:all, conditions: { :created_at => Date.today - 1...Date.today }) 

或者这个(在我看来最好):

 #Today Posts.find(:all, conditions: ["DATE(created_at) = ?", Date.today] ) #Yesterday Posts.find(:all, conditions: ["DATE(created_at) = ?", Date.today - 1] ) 

作为一项规则,我以UTC时区存储我服务器上的所有日期,并让UI处理任何时区转换。 为了获得正常工作的查询,我必须先将传入日期按到UTC特定的时间范围内。

 require 'date' class Post < ActiveRecord::Base def self.created(a_date) return Post.where(created_at: to_timerange(a_date)) end private def self.to_timerange(a_date) raise ArgumentError, "expected 'a_date' to be a Date" unless a_date.is_a? Date dts = Time.new(a_date.year, a_date.month, a_date.day, 0, 0, 0).utc dte = dts + (24 * 60 * 60) - 1 return (dts...dte) end end 

这样就可以打电话了

 # today posts = Post.created(Date.today) # yesterday posts = Post.created(Date.today - 1)