instance method
try
Ruby on Rails 3.1.12
Since v2.3.18Signature
try(*a, &b)
Invokes the method identified by the symbol method, passing it any arguments and/or the block specified, just like the regular Ruby Object#send does.
Unlike that method however, a NoMethodError exception will not be raised and nil will be returned instead, if the receiving object is a nil object or NilClass.
If try is called without a method to call, it will yield any given block with the object.
Examples
Without try
@person && @person.name
or
@person ? @person.name : nil
With try
@person.try(:name)
try also accepts arguments and/or a block, for the method it is trying
Person.try(:find, 1) @people.try(:collect) {|p| p.name}
Without a method argument try will yield to the block unless the receiver is nil.
@person.try { |p| "#{p.first_name} #{p.last_name}" }
Parameters
-
arest -
bblock
Source
# File activesupport/lib/active_support/core_ext/object/try.rb, line 28
def try(*a, &b)
if a.empty? && block_given?
yield self
else
__send__(*a, &b)
end
end
Defined in activesupport/lib/active_support/core_ext/object/try.rb line 28
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in Object