Stringify ключи на хеш, который имеет символы:
> hash_1.stringify_keys
=> {"date"=>"2011-11-01", "value"=>12}
Затем сравните.Итак, ваш ответ в одной строке:
> hash_1.stringify_keys == hash_2
=> true
Вы могли бы сделать это и наоборот, символизируя строковые ключи в hash_2
вместо их строкового преобразования в hash_1
:
> hash_1 == hash_2.symbolize_keys
=> true
Если вы хотите, чтобы строка / символизация была постоянным изменением, используйте версию с ударом !
: stringify_keys!
или symbolize_keys!
соответственно
> hash_1.stringify_keys! # <- Permanently changes the keys in hash_1 into Strings
=> {"date"=>"2011-11-01", "value"=>12} # as opposed to temporarily changing them for comparison
Ref: http://as.rubyonrails.org/classes/HashWithIndifferentAccess.html
Кроме того, я предполагаю, что вы хотели поставить цитаты вокруг дат ...
:date => "2011-11-01"
... или,явно создавать их как объекты Date?
:date => Date.new("2011-11-01")
То, как вы пишете дату, теперь устанавливает :date
в 2011-11-01
В настоящее время они интерпретируются как серии целых чисел с вычитанием вмежду ними.
То есть:
> date = 2011-11-01
=> 1999 # <- integer value of 2011, minus 11, minus 1