配列やハッシュから空白を取り除きたい場合、Rails6以前ではreject(&:blank?)
やreject { |_k, v| v.blank? }
を使っていましたが、Rails6からはcompact_blank
というメソッドが使用できるようになりました。
Rails6以前の空白削除
配列の場合
配列から空白を削除する場合、Rails6以前ではreject(&:blank?)
を使用する方法が主でした。
[1, "", nil, 2, " ", [], {}, false, true].reject(&:blank?)
=> [1, 2, true]
ハッシュの場合
ハッシュから空白を削除する場合、Rails6以前ではreject { |_k, v| v.blank? }
を使用する方法が主でした。
{ a: "", b: 1, c: nil, d: [], e: false, f: true }.reject { |_k, v| v.blank? }
=> {:b=>1, :f=>true}
Rails6の空白削除
配列・ハッシュに関わらず、Rails6からは空白の削除はcompact_blank
で対応できるようになりました。
配列の場合
[1, "", nil, 2, " ", [], {}, false, true].compact_blank
=> [1, 2, true]
ハッシュの場合
{ a: "", b: 1, c: nil, d: [], e: false, f: true }.compact_blank
=> {:b=>1, :f=>true}
まとめ
- 配列から空白を削除する場合、Rails6以前では
reject(&:blank?)
を使用する必要があった - ハッシュから空白を削除する場合、Rails6以前では
reject { |_k, v| v.blank? }
を使用する必要があった - Rails6では配列とハッシュから空白を削除する場合は、
compact_blank
を使用することが可能になった
参考
今回は配列やハッシュから空白を削除したい場合、Rails6からはcompact_blank
というメソッドが使えるということについて解説しました。既存のコードでreject(&:blank?)
やreject { |_k, v| v.blank? }
を使用している箇所は、ぜひ置き換えてみてください。