u16suzuの blog

日々学んだことのメモブログです。

たまにはRailsのIssueを読んでみる

今日はこのIssueを読んでみた

ActionController::Parameters#== does not works as expected · Issue #21032 · rails/rails · GitHub

hash = { foo: :bar }
params = ActionController::Parameters.new(hash)
params == hash #returns false

あるHashから生成した ActionController::Parameters オブジェクトと生成に使ったHash

の同一性が失われてしまっている(等位性を比較してもtrueにならない)というIssue

ActionController::Parameters.new が使っている ActiveSupport::HashWithIndifferentAccessが

内部で シンボルを文字列に変換して保持してしまう事が原因

ActiveSupport::HashWithIndifferentAccess に '==' をオーバーライドさせればよさそうという コメントがついている.