In Rails are these Time difference command producing excepted bheviour? If so why?

75 Views Asked by At

Steps to reproduce

Is this a excepted behaviour?

  1. Open the rails console.
  2. Type the following command:
Time.zone.yesterday - Time.zone.now

Output:

/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)
Time.zone.now - Time.zone.yesterday

Output:

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)
Time.zone.now - Time.zone.yesterday

Output:

/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)
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)

System configuration

Rails version: 7.0.3.1

Ruby version: 3.1.2

1

There are 1 best solutions below

0
Sachin Singh On

Time.zone.yesterday or Time.zone.today returns date whereas Time.zone.now returns a timestamp. And you can't calculate diff between a date and a timestamp. The errors you are getting are expected.