查找上个月的最后一个记录以与ruby进行比较

时间:2018-10-22 18:29:23

标签: ruby-on-rails ruby

有点奇怪。假设我在Rails 4应用程序中有一个数据库表,就像这样。

data table

此表由模型表示,即Metric。您可以看到上个月的最后一个指标的total_users值为100,而total_users的最新值为105。

我需要做的是比较total_users的最新值与上个月的最后一个值,得出差值。因此,如果我们将此变量称为@net_addition,则当前值应为“ 5”,即100与105之间的差。

显然,最新记录很容易,Metric.order("created_at").last

我遇到障碍的地方是查找上个月的最新记录。我想我需要以某种方式按月对数据进行分组,然后找到最新的(但不是当前的)组,并在其中找到最后一条记录?

我想到的另一件事可能是希望查看当前记录是否与上一个记录不在同一月份,并以某种方式将该记录标记为可比较的记录,因此每个月的最后一个记录将结束上面有一个反对的旗帜?

有人可以让我入门吗?

2 个答案:

答案 0 :(得分:1)

您可以按日期范围确定范围

start_date = 1.month.ago.beginning_of_month
end_date = 1.month.ago.end_of_month

Metric.where(created_at: start_date..end_date)
      .order(created_at: :desc).first

答案 1 :(得分:1)

last_month = Time.current - 1.month
Metric.order("created_at").where(
  created_at: last_month.beginning_of_month..last_month.end_of_month
).last

使用a range创建一个WHERE created_at BETWEEN a AND b子句。