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行で短くすることができそう。
(了)