如果我在Rails中有meet
模型,现在我想获得昨天的记录,我该怎么办?
Meet.where(:created_at=> ) # what should I write here?
或者ActiveRecord附带了一些过滤昨天记录的方法吗?
答案 0 :(得分:9)
Meet.where("DATE(created_at) = ?", Date.today-1)
答案 1 :(得分:1)
Meet.where("DATE(created_at) = ?", Date.yesterday)
答案 2 :(得分:1)
Meet.find(:all, :conditions => ["DATE(created_at) = ?", Date.today-1])
答案 3 :(得分:1)
通过Rails http://api.rubyonrails.org/classes/ActiveRecord/QueryMethods.html#method-i-where
Meet.where("created_at < ?", Date.yesterday)
或在postgresql中
Meet.where("created_at < 'yesterday'")
答案 4 :(得分:0)
这是一种稍微更通用的方法,使用Arel和范围:
scope :created_since, (
lambda do |time|
where(Meet.arel_table[:created_at].gteq(time))
end
)
Meet.created_since(1.day.ago).count
答案 5 :(得分:0)
如果您使用的是 Rails 5.1 或更高版本,则可以使用 all_day
:
Meet.where(created_at: 1.day.ago.all_day)
也..我建议定义一个范围,如:
scope :yesterday, -> { where(created_at: 1.day.ago.all_day) }