1 We get confused when there are many options to choose from. Same is the case when it comes to use any one from the above list. But one needs to be careful in using them and it is better that we understand it well before using it. 2 3 Let's see which method does what. 4 5 .nil? 6 7 - It is Ruby method 8 - It can be used on any object and is true if the object is nil. 9 - "Only the object nil responds true to nil?" - RailsAPI 10 11 nil.nil? = true 12 anthing_else.nil? = false 13 a = nil 14 a.nil? = true 15 “”.nil = false 16 17 .empty? 18 19 - It is Ruby method 20 - can be used on strings, arrays and hashes and returns true if: 21 String length == 0 22 Array length == 0 23 Hash length == 0 24 - Running .empty? on something that is nil will throw a NoMethodError 25 26 "".empty = true 27 " ".empty? = false 28 29 30 .blank? 31 32 - It is Rails method 33 - operate on any object as well as work like .empty? on strings, arrays and hashes. 34 35 nil.blank? = true 36 [].blank? = true 37 {}.blank? = true 38 "".blank? = true 39 5.blank? == false 40 41 - It also evaluates true on strings which are non-empty but contain only whitespace: 42 43 " ".blank? == true" ".empty? == false 44 45 Quick tip: !obj.blank? == obj.present? 46 47 activesupport/lib/active_support/core_ext/object/blank.rb, line 17 # (Ruby 1.9) 48 49 def present? 50 !blank? 51 end