.where方法不理解Date对象

时间:2019-12-11 14:09:53

标签: ruby-on-rails ruby date

我在第一个循环时遇到了麻烦。第二个成功填充@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

tofrom的定义如下:

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对象不正确。我做错了什么事?

干杯。

1 个答案:

答案 0 :(得分:2)

在第一个循环中,您使用了to - from,并且得出了两个日期之间的天数。

如果我正确理解了您想在日期之间找到所有certifieds的原因,那么可以用Range作为where的参数,而不是减去它们。您是在第二个循环中使用Date.today - 1.months..Date.today完成的。

您可以使用..语法在两个日期之间建立范围。您的where子句应如下所示:.where(date: from..to)