私は次の問題に苦しんでいます:
$ rails c
Loading development environment (Rails 3.2.1)
irb(main):001:0> 2.class
=> Fixnum
irb(main):002:0> Fixnum === 2
=> true
irb(main):003:0> 2.hours.class
=> Fixnum
irb(main):004:0> Fixnum === 2.hours
=> false
irb(main):005:0>
指定されたパラメータがシンボルなのかタイムスパンなのかをテストしたいと思います。私がRuby/Railsの自然な方法だと思った方法は次のとおりです。
case param
when :today then
# do this...
when Fixnum then
# do that...
else
raise ArgumentError ...
end
ActiveSupportのソースコードからわかる限り、Fixnum===
はオーバーライドされません。だから、私は何が間違っているのですか?