これは何
記事投稿イベントの参加記事です。
presenceメソッドについて
Rails(ActiveSupport)では、presence
メソッドというメソッドが使えます。
これはレシーバに対してpresent?
を実行し、true
だった場合にレシーバ自身を返し、false
だった場合にnil
を返すようなメソッドです。
以下に例を記載します。
例
10.presence #=> 10
''.presence #=> nil
presenceを用いた実装テクニック
presence
メソッドと||
演算子を用いることで、値がnil
だった時にデフォルト値を簡潔に記述できます。
使わない例
def foo(val)
val.present? ? val : 'default'
end
使う例1
def foo(val)
val.presence || 'default'
end
コンストラクタのインスタンス変数代入でも使えます
使う例2
class Foo
def initialize(val)
@val = val.presence || 'default'
end
end
複数の値を用いるときも使えます
使う例3
def foo(val1, val2, val3)
val1.presence || val2.presence || val3.presence || 'default'
end
参考文献