1

Railsでこれを出力する美しい方法は何だろうか。

order.items.min.user.email

emailの値を表示したいのですが、私が知っている唯一のことは、orderが nil ではないことですが、 itemsuserは nil である可能性があります。

私が見る唯一の方法は

if !order.items.empty? 
  if !order.items.min.user.nil? 
    if !order.items.min.user.email.nil? 
      order.items.min.user.email
    end
  end
end

最善の方法ではないように見えますが、より良い方法を知っていますか?

4

2 に答える 2

14

以下を使用できますtry(またはtry!、Rails3 のバージョンと不明なメソッドの処理方法によって異なります):

order.items.try(:min).try(:user).try(:email)

trynilは、長いメソッド呼び出しチェーンで s (および Rails のバージョンによっては不明なメソッド)を飲み込む簡単な方法です。

于 2013-08-28T04:47:16.257 に答える