tawara's blog

雑記。個人の見解です。

presence メソッドを知った

PRレビューで最近よく見るメソッドがある。それが presence メソッド。

どんなメソッドかというと、英語で見事に説明されている。

Returns the receiver if it's present otherwise returns nil

むしろコードを見るほうがわかりやすいかもしれない。自身に対してpresent? をしている。

  def presence
    self if present?
  end

つまり、レシーバー(オブジェクト)が存在するならばレシーバー(オブジェクト)を返し、なかったらnilを返す。

例えば、こんなふうに present? を使ってあるコードがある。元ネタはGithub

rails/blank.rb at 8015c2c2cf5c8718449677570f372ceb01318a32 · rails/rails · GitHub

regionの変数を確定する際に、stateがあればstateを、そうでなければ、countryがあればcountry を、もしそうでなければ 'US' を入れる処理になっている。

state   = params[:state]   if params[:state].present?
country = params[:country] if params[:country].present?
region  = state || country || 'US'

presence メソッドを利用すると上記は一行で書ける。便利。

region = params[:state].presence || params[:country].presence || 'US'

三項演算子や if文を1行で短くすることができそう。

(了)