aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/metal/strong_parameters.rb
diff options
context:
space:
mode:
authorDana Sherson <robot@dana.sh>2019-06-05 17:25:18 +1000
committerDana Sherson <robot@dana.sh>2019-06-05 18:18:17 +1000
commitc8847c17a7c9ae75c44c522c56ccd9c5fca25ea7 (patch)
tree057901f401f10fb98615b9bca73c88d110c13fba /actionpack/lib/action_controller/metal/strong_parameters.rb
parentee10e05af27facf42b1c49f8aaa0463d3af6989c (diff)
downloadrails-c8847c17a7c9ae75c44c522c56ccd9c5fca25ea7.tar.gz
rails-c8847c17a7c9ae75c44c522c56ccd9c5fca25ea7.tar.bz2
rails-c8847c17a7c9ae75c44c522c56ccd9c5fca25ea7.zip
Add compact_blank shortcut for reject(&:blank?)
I frequently find myself having to .compact but for blank. which means on an array reject(&:blank?) (this is fine), or, on a hash `.reject { |_k, v| v.blank? }` which is slightly more frustrating and i usually write it as .reject(&:blank?) first and am confused when it's trying to check if the keys are blank. I've added the analagous .compact_blank! where there's a reject! to build on (there's also a reject! in Set, but there's no other core_ext touching Set so i've left that alone)
Diffstat (limited to 'actionpack/lib/action_controller/metal/strong_parameters.rb')
-rw-r--r--actionpack/lib/action_controller/metal/strong_parameters.rb12
1 files changed, 12 insertions, 0 deletions
diff --git a/actionpack/lib/action_controller/metal/strong_parameters.rb b/actionpack/lib/action_controller/metal/strong_parameters.rb
index 6a07a73d94..27c2a8db36 100644
--- a/actionpack/lib/action_controller/metal/strong_parameters.rb
+++ b/actionpack/lib/action_controller/metal/strong_parameters.rb
@@ -744,6 +744,18 @@ module ActionController
end
alias_method :delete_if, :reject!
+ # Returns a new instance of <tt>ActionController::Parameters</tt> without the blank values.
+ # Uses Object#blank? for determining if a value is blank.
+ def compact_blank
+ reject { |_k, v| v.blank? }
+ end
+
+ # Removes all blank values in place and returns self.
+ # Uses Object#blank? for determining if a value is blank.
+ def compact_blank!
+ reject! { |_k, v| v.blank? }
+ end
+
# Returns values that were assigned to the given +keys+. Note that all the
# +Hash+ objects will be converted to <tt>ActionController::Parameters</tt>.
def values_at(*keys)