時々、user.id == nil になります。そして、これが起こると、ルックアップは失敗します。このコードを救う最も実用的な方法は何ですか? これが発生した場合、通常何を返しますか?
def lookup
@data[user.id]["email"]
end
メールメソッドが戻り値を使用しているとします
email(lookup).deliver
begin
@data[user.id]["email"]
rescue Exception
nil
end
またはあなたができるかもしれません
@date[user.try(:id)]["email"]
user が nil で id を呼び出すと、nil が返されます。
ここでの本当の問題は、コードの匂いがすることです。メソッドを所有するクラスが何であれlookup
、@data の実装の詳細を知りすぎています。コードを追加せずに修正することはお勧めできませんが、データから電子メールを引き出す方法だけを知っているメソッド/クラスを作成することをお勧めします。何かのようなもの:
@data.get_email_for_user
そうすれば、このクラスはユーザーが nil かどうかを気にする必要がなくなります。メールを返すことだけを心配する必要があります。
user.id.nil? ? <default return val here> : @data[user.id]["email"]
または、何も返したくない場合:
@data[user.id]["email"] if user.id