我在开发中使用带有 sqlite 的 Rails,在生产中使用 mysql。我使用这种方法得到了前一天Date.today.prev_day(n=3)
。这在开发中工作正常,但在部署到生产时会出现此错误:
NoMethodError (undefined method `prev_day' for Sun, 09 Jun 2013:Date)
我在开发中使用带有 sqlite 的 Rails,在生产中使用 mysql。我使用这种方法得到了前一天Date.today.prev_day(n=3)
。这在开发中工作正常,但在部署到生产时会出现此错误:
NoMethodError (undefined method `prev_day' for Sun, 09 Jun 2013:Date)
为什么不直接使用yesterday
方法:
1.9.3p392 :011 > Date.today
=> Sun, 09 Jun 2013
1.9.3p392 :012 > Date.yesterday
=> Sat, 08 Jun 2013
1.9.3p392 :013 > Date.yesterday.yesterday
=> Fri, 07 Jun 2013
或者,如果您需要提前指定特定天数,请坚持使用 prev_day 方法,但尝试删除 n=3 并仅使用整数,如
Date.today.prev_day(3)
如果这不起作用,您的生产服务器上可能有旧版本的 Ruby。
只需使用等效方法Date - n
1.9.3p392 :017 > Date.today-3
=> Sun, 09 Jun 2013
您可能正在生产机器上使用 1.9.1 之前的 ruby 版本。根据APIdock prev_day
是在 1.9.1 版本中引入的。