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

[解決済み] 文字列が空の場合、何らかのデフォルト値を返す

2022-12-30 04:18:55

質問

ある値が空白かどうかをチェックして、「データが存在しない」というような記述をしたいことがよくあります。

@user.address.blank? ? "We don't know user's address" : @user.address

そして、この方法で処理する必要のあるフィールドが20~30個くらいになると、醜くなってきます。

そこで、Stringクラスを拡張して or というメソッドで

class String
  def or(what)
    self.strip.blank? ? what : self
  end
end

@user.address.or("We don't know user's address")

今、それはより良く見えます。しかし、まだ生々しく粗い

私の問題を解決するにはどうしたらいいでしょうか。たぶん ActiveSupport class を拡張するのがいいのか、ヘルパーメソッドやミキシンを使うのがいいのか、 それとも他の何かを使うのがいいのか。Rubyの理想論、あなたの経験、ベストプラクティスは私に教えてくれますか?

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

ActiveSupportでは、Webサイト上に presence メソッドをすべてのオブジェクトに追加し、そのレシーバが present? (の反対)。 blank? )、そして nil でなければ

host = config[:host].presence || 'localhost'