有点奇怪。假设我在Rails 4应用程序中有一个数据库表,就像这样。
此表由模型表示,即Metric
。您可以看到上个月的最后一个指标的total_users
值为100,而total_users
的最新值为105。
我需要做的是比较total_users
的最新值与上个月的最后一个值,得出差值。因此,如果我们将此变量称为@net_addition
,则当前值应为“ 5”,即100与105之间的差。
显然,最新记录很容易,Metric.order("created_at").last
。
我遇到障碍的地方是查找上个月的最新记录。我想我需要以某种方式按月对数据进行分组,然后找到最新的(但不是当前的)组,并在其中找到最后一条记录?
我想到的另一件事可能是希望查看当前记录是否与上一个记录不在同一月份,并以某种方式将该记录标记为可比较的记录,因此每个月的最后一个记录将结束上面有一个反对的旗帜?
有人可以让我入门吗?
答案 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
子句。