Я знаю об этой функции, предоставляемой ActiveSupport.
h = ActiveSupport::OrderedOptions.new
h.boy = 'John'
h.girl = 'Mary'
h.boy # => 'John'
h.girl # => 'Mary'
Однако у меня уже есть большой хэш, и я хочу получить к нему доступ, используя точечную нотацию. Вот что я пробовал:
large_hash = {boy: 'John', girl: 'Mary'}
h = ActiveSupport::OrderedOptions.new(large_hash)
h.boy # => nil
Это не сработало. Как я могу заставить это работать.
Я использую ruby 1.9.2
Обновление:
Извините, я должен был упомянуть, что я не могу использовать openstruct, потому что у него нет метода each_pair, который есть у Struct. Я не знаю ключей заранее, поэтому не могу использовать openstruct.