これは何?
SSIA
Rails コンソールで実行
$ rails c
Loading development environment (Rails 6.0.4.6)
irb(main):001:0> x1 = {a:2, b:3}
=> {:a=>2, :b=>3}
irb(main):002:0> x1[:a]
=> 2
irb(main):003:0> x1['a']
=> nil
irb(main):004:0> x1.class
=> Hash
irb(main):005:0> x2 = {'a'=>2, 'b'=>3}
=> {"a"=>2, "b"=>3}
irb(main):006:0> x2[:a]
=> nil
irb(main):007:0> x2['a']
=> 2
irb(main):008:0> x2.class
=> Hash
Hash のままでは、シンボルで参照した時、文字列と参照した時で区別されてることが分かります。
irb(main):009:0> x3 = {'a'=>2, 'b'=>3}.with_indifferent_access
=> {"a"=>2, "b"=>3}
irb(main):010:0> x3[:a]
=> 2
irb(main):011:0> x3['a']
=> 2
irb(main):012:0> x3.class
=> ActiveSupport::HashWithIndifferentAccess
with_indifferent_access
を使うことによって、シンボルでも文字列でも参照できるようになりました。