Хеш Ruby 1.8 находится не в порядке вставки. С ruby 1.9 они будут.
Однако рельсы предлагают альтернативу этому, класс OrderedHash
.
my_hash = ActiveSupport::OrderedHash.new
my_hash[:key] = 'value'
my_hash[:second_key] = 'second value'
Этот хеш на самом деле является массивом этого формата:
[[:key, 'value'], [:second_key, 'second value']]
Записи остаются в том порядке, в котором вы их вставили.
И вы можете получить к ним доступ, как с любым другим хешем.