Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save dayitv89/de9ecfc4414ca6b6ece3eeb2029e78ef to your computer and use it in GitHub Desktop.
Save dayitv89/de9ecfc4414ca6b6ece3eeb2029e78ef to your computer and use it in GitHub Desktop.
Difference between nil?, empty?, blank? and present? in Ruby and Ruby on Rasils.
# nil? can be used on any Ruby object. It returns true only if the object is nil.
nil.nil? # => true
[].nil? # => false
{}.nil? # => false
"".nil? # => false
" ".nil? # => false
true.nil? # => false
# empty? can be used on some Ruby objects including Arrays, Hashes and Strings. It returns true only if the object's length is zero.
nil.empty? # NoMethodError: undefined method `empty?' for nil:NilClass
[].empty? # => true
{}.empty? # => true
"".empty? # => true
" ".empty? # => false
true.empty? # => NoMethodError: undefined method `empty?' for true:TrueClass
# blank? is an ActiveSupport extension to Ruby Object and returns true for nil, false, empty, or a white-space string.
[ "", " ", false, nil, [], {} ].all?(&:blank?) # => true
# present? is also an ActiveSupport extension to Ruby Object and it is the negation of blank?
[ "", " ", false, nil, [], {} ].any?(&:present?) # => false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment