1. ホーム
  2. ruby-on-rails

[解決済み] object.presenceのポイントとは?

2023-05-14 15:50:59

質問

Railsのドキュメントで が提供する例 に対して object.presence というメソッドがあります。

region = params[:state].presence || params[:country].presence || 'US'

と同等ではないか。

region = params[:state] || params[:country] || 'US'

を使う意味は何ですか? presence ?

どのように解決するのですか?

ここがポイントです。

''.presence
# => nil

ということは params[:state] == '' :

region = params[:state].presence || 'US'
# => 'US'
region = params[:state] || 'US'
# => ''

さらに、これは似たような方法で動作します。 nil に応答する全てのオブジェクトに対して同様の動作(つまり、オブジェクトが'空'であれば、を返す)をします。 empty? メソッドに応答する全てのオブジェクトに適用されます。

[].presence
# => nil

参考までにドキュメントを紹介します。

http://api.rubyonrails.org/classes/Object.html#method-i-presence