我不时有user.id == nil。当发生这种情况时,我的查找失败。拯救此代码最实用的方法是什么?当这种情况发生时你通常会回归什么?
def lookup
@data[user.id]["email"]
end
假设邮件方法正在使用返回值
email(lookup).deliver
答案 0 :(得分:4)
begin
@data[user.id]["email"]
rescue Exception
nil
end
或者你可以做到
@date[user.try(:id)]["email"]
如果用户为nil并且你在其上调用id,它将返回nil。
这里真正的问题是你有一个代码味道。无论什么类拥有lookup
方法,都知道@data的实现细节。我不建议在没有更多代码的情况下修复,但我建议编写一个只知道如何从数据中提取电子邮件的方法/类。类似的东西:
@data.get_email_for_user
这样,这个班级就不用担心用户是否为零。它只需要担心退回电子邮件。
答案 1 :(得分:0)
user.id.nil? ? <default return val here> : @data[user.id]["email"]
或者,如果您不想退货:
@data[user.id]["email"] if user.id