0

時々、user.id == nil になります。そして、これが起こると、ルックアップは失敗します。このコードを救う最も実用的な方法は何ですか? これが発生した場合、通常何を返しますか?

def lookup  
  @data[user.id]["email"]
end

メールメソッドが戻り値を使用しているとします

email(lookup).deliver
4

2 に答える 2

4
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 かどうかを気にする必要がなくなります。メールを返すことだけを心配する必要があります。

于 2012-02-28T21:47:49.377 に答える
0

user.id.nil? ? <default return val here> : @data[user.id]["email"]

または、何も返したくない場合:

@data[user.id]["email"] if user.id

于 2012-02-28T21:47:49.660 に答える