railsのpresenceが便利という話

presenceという便利メソッドがあることを教えてもらったので、メモがてらに書いておきます。

使い方

まず、sourceコードです。

presence (Object) - APIdock

def presence
  self if present?
end

present?であれば、selfを返すというシンプルメソッドですね。

x = user.name.present? ? user.name : 'hoge'

こんなやつをこう書けます。(修正しています)

user.name = ""
x = user.name.presence || 'hoge'
=>'hoge'
x = user.name || 'hoge'
=>""

present?を行っているので、中身が空かを確認してくれています。(空文字対策など)

配列も同じです。

tags =[]
x = tags.presence || 'hoge'
=>'hoge'
tags = %w(foo bar)
x = tag.presence || 'hoge'
=> ["foo", "bar"]

間違っていることを書いていたので、わたろ (id:wat-aro)さん、ありがとうございますm( )m

tryもそうですが、こういうのは知っているかどうかで簡潔に書ける場所が増えるとと思うので、しっかり覚えておきたいですね。

mikamisan.hatenablog.com