NOTE / Ruby-On-Rails

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型態
Loading