Ruby .nil? .empty? .blank? .present?判斷
使用.nil?
判斷,任何物件都是false,只有nil是true。
nil.nil? #true
[].nil? #false
{}.nil? #false
"".nil? #false
" ".nil? #false
"abc".nil? #false
123.nil? #false
使用empty?
判斷,只要是完全空值就是 true(空白 不算空值,相對的 method 是 any?
nil.empty? #NoMethodError: undefined method `empty?' for nil:NilClass
[].empty? #true
{}.empty? #true
"".empty? #true
" ".empty? #false
"abc".empty? #false
123.empty? #NoMethodError: undefined method `empty?' for 123:Fixnum
使用.any?
判斷
nil.any? #NoMethodError: undefined method `any?' for nil:NilClass
[].any? #false
{}.any? #false
"".any? #NoMethodError: undefined method `any?' for "":String
" ".any? #NoMethodError: undefined method `any?' for "":String
"abc".any? #NoMethodError: undefined method `any?' for "":String
123.any? #NoMethodError: undefined method `any?' for 123:Fixnum
使用blank?
判斷,只要是nil
,空值都是 true
nil.blank? #true
[].blank? #true
{}.blank? #true
"".blank? #true
" ".blank? #true
"abc".blank? #false
123.blank? #false
使用present?
判斷 有資料一定為true
nil.present? #false
[].present? #false
{}.present? #false
"".present? #false
" ".present? #false
"abc".present? #true
123.present? #true
從上可以重整出最適用於的是 .blank? 和 .present? 報錯機率比較小(個人論點~)。
使用persisted?
和new_record?
判斷是否已存在資料庫的method
a = User.new
a.persisted? #false
a.new_record? #true
a.save
a.persisted? #true
a.new_record? #false
查看物件有哪些方法可以使用
Object.superclass #查上一層?
Object.ancestors #查出所有相關資訊?
Object.methods?(:new) #查物件是否有這個方法?
Object.is_a?(string) #查看是否是string型態