LoginSignup
3
0

More than 1 year has passed since last update.

Tips: Railsでpresenceメソッドを用いてnil時に返す値を簡潔に記述する

Posted at

これは何

記事投稿イベントの参加記事です。

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

参考文献

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0