RailsでRuby2.4のHash#compactを使うp-rがある
読みました。短くまとめます。
これがマージされると、Ruby 2.4 で加わる Hash#compact / Hash#compact! を Rails でも使うようになる。
Hash#compact
が無い環境では、従来どおり activesupport 版を使うような変更ですね。
# activesupport/lib/active_support/core_ext/hash/compact.rb + unless Hash.instance_methods(false).include?(:compact) + # Returns a hash with non +nil+ values. + # + # hash = { a: true, b: false, c: nil } + # hash.compact # => { a: true, b: false } + # hash # => { a: true, b: false, c: nil } + # { c: nil }.compact # => {} + # { c: true }.compact # => { c: true } + def compact + select { |_, value| !value.nil? } + end
Ruby 2.4 の Hash#compact #compact!
は C 実装です。ActiveSupport 版に比べて速くなるでしょう。