3

これが私がやりたいことの擬似コードです:

if @current_user is defined then puts @current_user.name
4

3 に答える 3

3

変数が定義されているかどうかを本当に知る必要がありますか?それとも、変数に有効なUserオブジェクトが含まれているかどうかを知るだけで十分ですか?

インスタンス変数はNameError、定義されていない場合でも、 を発生させることはありません。それらは に評価されるだけnilなので、それを確認するだけです:

puts @current_user.name unless @current_user.nil?

あなたの質問にはActiveSupportタグが付けられているので、とにかくロードしたと仮定して、Object#try拡張メソッドを使用することもできます。

puts @current_user.try(:name)
于 2013-10-18T13:02:06.887 に答える