元フリーエンジニアライフ

Ruby on Rails とか MovableType とかAWSやってるフリーランスウェブエンジニアの記録でした。現在は法人成りしてIT社長。

Object#blank?/Object#present?/Object#presence(ActiveSupport)

https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/object/blank.rb ```ruby require 'active_support/core_ext/object/blank' ``` で利用可能になるメソッド。 # blank? コードを書いていてよくある「空白」を統一的に扱えます。 ```ruby if address.nil? || address.empty? puts "addressが空です" end ``` みたいなコードを ```ruby if address.blank? puts "addressが空です" end ``` こんな風にかけて読みやすい。 標準で「空」とされるのは以下の通り。 - '' - ' ' - false - nil - [] - {} `Object#blank?`は`empty?`が定義されている場合はその否定を返すように実装されているので、独自に作成したクラスを対応させるのも簡単。 ```ruby class Sheet def empty? lines.reject_if{|line| line.blank?}.empty? end end ``` # present? NOT `blank?` ```ruby if !error.blank? puts "error!" end if error.present? puts "error!" end ``` # presence レシーバが`present?`なら、レシーバ自身、そうでなければ`nil`を返すだけなのですが、 ```ruby name = params[:name] ? params[:name] : 'default' ``` みたいなコードを ```ruby name = params[:name].presence || 'default' ``` こんな風にかけてスッキリ。