我在第一个循环时遇到了麻烦。第二个成功填充@res []数组,而第一个不成功。
@res = {}
[:disc, :wpmot, :df, :ptsi, :eq].each do |t|
tool = Tool.find_by(name: t)
p (to - from)
@res[t] = tool.certifieds.where(date: to - from)
end
.
.
.
@res = {}
[:disc, :wpmot, :df, :ptsi, :eq].each do |t|
tool = Tool.find_by(name: t)
p (Date.today - 1.months..Date.today)
@res[t] = tool.certifieds.where(date: Date.today - 1.months..Date.today)
end
to
和from
的定义如下:
from = Date.new(start_year, start_month, start_day)
to = Date.new(end_year, end_month, end_day)
然后我打印了两个值,以查看它们是否对应,但不对应。
p (Date.today - 1.months..Date.today)
给了我'Mon, 11 Nov 2019..Wed, 11 Dec 2019'
,而p (to - from)
给了我'(1/1)'
(两个日期之间的比率)。因此,我知道第一个循环无法正常工作,因为Date
对象不正确。我做错了什么事?
干杯。
答案 0 :(得分:2)
在第一个循环中,您使用了to - from
,并且得出了两个日期之间的天数。
如果我正确理解了您想在日期之间找到所有certifieds
的原因,那么可以用Range
作为where
的参数,而不是减去它们。您是在第二个循环中使用Date.today - 1.months..Date.today
完成的。
您可以使用..
语法在两个日期之间建立范围。您的where子句应如下所示:.where(date: from..to)