aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/lib')
-rw-r--r--activesupport/lib/active_support/core_ext/object/blank.rb9
1 files changed, 5 insertions, 4 deletions
diff --git a/activesupport/lib/active_support/core_ext/object/blank.rb b/activesupport/lib/active_support/core_ext/object/blank.rb
index 893858fcd6..99fd22ff56 100644
--- a/activesupport/lib/active_support/core_ext/object/blank.rb
+++ b/activesupport/lib/active_support/core_ext/object/blank.rb
@@ -40,15 +40,16 @@ class Object
# region = params[:state].presence || params[:country].presence || 'US'
#
# You can also use this with a block that will be yielded if the object is present
- # and the result of that block will then be returned
+ # and the result of that block will then be returned. The block itself is run against
+ # the instance you're running #presence on (using instance_eval)
#
- # project.account.owner.presence { |p| p.name.first } || 'Nobody'
+ # project.account.owner.presence { name.first } || 'Nobody'
#
# @return [Object]
- def presence
+ def presence(&block)
if present?
if block_given?
- yield self
+ instance_eval(&block)
else
self
end