Bug #11017
Updated by nobu (Nobuyoshi Nakada) about 9 years ago
Hello all. I took the code from the active_support and its simplified ### hash_with_indifferent_access.rb ```ruby ``` class HashWithIndifferentAccess < Hash def initialize(constructor = {}) if constructor.is_a?(Hash) super() update(constructor) else super(constructor) end end alias_method :hash_writer, :[]= def []=(key, value) result = hash_writer(key, convert_value(value)) puts "result class is #{result.class}" result end def convert_value(value, options = {}) if value.is_a? Hash HashWithIndifferentAccess.new(value) else value end end end ``` If run this is code that it return incorrect incorrent data: ~~~ruby ~~~ > ps = HashWithIndifferentAccess.new({ first: 'first', second: 'second' }) # => {:first=>"first", :second=>"second"} > temp_hash = ps[:test] = {} result class is HashWithIndifferentAccess # => {} > temp_hash.class # => Hash ~~~ I see what method `HashWithIndifferentAccess#[]=` HashWithIndifferentAccess#[]= return `Hash` Hash object but should `HashWithIndifferentAccess`. HashWithIndifferentAccess. This is a bug?