これは一般的なパターンです。変数が存在しない場合、undefined local variable or method
エラー。
既存のコードにはif variable_name.present?
しかし、これは存在しない変数を考慮していませんでした。
変数の値を確認し、変数がまったく存在しないことを説明するにはどうすればよいですか?
私はもう試した:
if (defined? mmm) then
if mmm.present? then
puts "true"
end
end
しかしRubyはまだその内部をチェックしますmmm.present?
が存在しない場合は、「そのような変数はありません」をスローします。
これには共通のパターン/解決策があると確信しています。
変更 present?
から!= ''
そして、&&演算子を使用して、最初の式がtrueの場合にのみseond式を評価しようとします。
if defined?(mmm) && (mmm != '') then puts "yes" end
しかし、実際には2019年以降、以下の両方が機能するため、これは不要になりました
irb(main):001:0> if (defined? mm) then
irb(main):002:1* if mm.present? then
irb(main):003:2* p true
irb(main):004:2> end
irb(main):005:1> end
=> nil
irb(main):006:0> if (defined? mm) then
irb(main):007:1* p mm
irb(main):008:1> end
=> nil
On Ruby on Rails
if defined?(mm) && mm.present?
puts "acceptable variable"
end
IRBについて
if defined?(mm) && !mm.blank? && !mm.nil?
puts "acceptable variable"
end
未定義の変数、nil、空の値を取得しないようにすることができます。