コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Railsでいずれかの値が入っていたらその値を代入する、などの処理をするときはpresenceが便利

先日の代入記事の発展編

環境

rails (5.2.2)
  activesupport (= 5.2.2)

presenceとは

presenceメソッドは、present?がtrueの場合は自身のレシーバを返し、falseの場合はnilを返します。 - Active Support コア拡張機能 - Rails ガイド - presence

使い方

value1 value2 value3 があり、1から順に入っていれば値を result に代入したい場合

result = value1.presence || value2.presence || value3.presence

||nil の場合右式の評価値を使うので左から順に評価されていく。

注意点

presencepresent? が trueであれば値を返すため ""[] 、 {} は false扱いになるので、空文字などの空の値を評価したい場合などは注意が必要。

参考リンク