如何获得特定时间段内的结果计数?

时间:2011-05-03 08:04:43

标签: ruby-on-rails-3 activerecord

我的屏幕上有我们的订单,我希望显示一些快速简便的报告。

我已经知道我可以通过

来计算所有订单
<%= Order.count(:all) %>

我还想显示特定日期范围内的一些计数,例如“今天”,“昨天”,“本周”,“本月”,“上个月”,“今年”等。

我对rails非常陌生,最近从PHP开始实现了飞跃,所以我仍然习惯了Rails的做事方式。我们使用Rails 3和ActiveRecord来查询数据库。实现这一目标的最佳方式是什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

看看这个例子。您可以将条件传递给count方法。

Person.count(:conditions => "age > 26")

Order.count(:conditions => "created_at BETWEEN '2010-09-29' AND '2010-11-30'")

更多examples from the API documentation

答案 1 :(得分:1)

首先,您不应在视图中使用查找程序(或任何逻辑)。相反,将count作为订单模型的类方法,或将其作为范围。而且,在Rails 3上,最好使用新的语法(对于你的计数也一样):

Order.find(...).all

现在,您可以使用Rails模型的created_at属性来执行您想要的操作。然后,您只需要执行以下操作:

Order.where("created_at > ?", 2.days.ago.to_date)