You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails中时间差计算命令报错是否为预期行为?原因是什么?

问题

这是否属于预期行为?

复现步骤

  • 打开Rails控制台
  • 输入以下命令并查看输出:

命令1

Time.zone.yesterday - Time.zone.now

输出:

/Users/manishsharma/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/core_ext/date/calculations.rb:104:in `-': expected numeric (TypeError)

命令2

Time.zone.now - Time.zone.yesterday

输出:

3.1.2 :002 > Time.zone.now - Time.zone.yesterday
/Users/manishsharma/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/core_ext/time/calculations.rb:209:in `ago': undefined method `-@' for Wed, 21 Sep 2022:Date (NoMethodError)

    since(-seconds)
          ^
Did you mean?  -
/Users/manishsharma/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/core_ext/time/calculations.rb:294:in `-': can't convert Date into an exact number (TypeError)

命令3

Time.zone.now - Time.zone.yesterday

输出:

/Users/manishsharma/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/core_ext/date/calculations.rb:104:in `-': expected numeric (TypeError)

命令4

3.1.2 :003 > Time.zone.now - Date.yesterday

输出:

/Users/manishsharma/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/core_ext/time/calculations.rb:209:in `ago': undefined method `-@' for Wed, 21 Sep 2022:Date (NoMethodError)

    since(-seconds)
          ^
Did you mean?  -
/Users/manishsharma/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/core_ext/time/calculations.rb:294:in `-': can't convert Date into an exact number (TypeError)

系统配置

  • Rails版本: 7.0.3.1
  • Ruby版本: 3.1.2

内容的提问来源于stack exchange,提问作者Manish Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:15:43