Issue #15225 has been reported by abhionlyone (Abhilash Reddy).

----------------------------------------
Feature #15225: OpenStruct: Recursively converting child Hash object attributes to OpenStruct objects.
https://bugs.ruby-lang.org/issues/15225

* Author: abhionlyone (Abhilash Reddy)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
Currently, OpenStruct allows this:

~~~ ruby
person = OpenStruct.new
person.age = 25
person.name = "Abhilash"
puts person.name # "Abhilash"
~~~

But something like this is not possible:

~~~ ruby
person.more_info = {country: "Japan",  skills: ["Ruby", "C++"]}
puts person.more_info.country # NoMethodError (undefined method `country' for {:country=>"Japan"}:Hash)
~~~

It will be very helpful if we can provide an option to recursively convert child Hash objects to OpenStruct objects. By default it can be set to false. 

I've done a basic implementation of this and created a PR here: https://github.com/ruby/ostruct/pull/5

Please let me know if there are any objections. If this can be accepted, I would like to add test cases for the same.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>