Interesting point. In the following benchmark, the two versions came out the same up to several thousand iterations. Above 10 000, the sans conditional version running delete_if on an empty hash is about 25% faster, so there you go. I made a new commit with the faster version.

```
require 'benchmark'

Benchmark.bm do |b|
  b.report("with conditional, to avoid delete_if on empty hash") do
    params = nil
    params ||= {}
    1_000.times { params = (params.delete_if { |k, v| v.blank? && v != false }) if params.present? }    
  end

  b.report("with default assignment instead of conditional, delete_if performed on empty hash") do
    params = nil
    1_000.times { (params ||= {}).delete_if { |k, v| v.blank? && v != false } }
  end
end
```