有时我有 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"]
如果用户为 nil 并且您在其上调用 id ,它将只返回 nil 。
这里真正的问题是你有一种代码味道。拥有该lookup
方法的任何类都非常了解@data 的实现细节。我不能推荐没有更多代码的修复,但我建议编写一个只知道如何从数据中提取电子邮件的方法/类。就像是:
@data.get_email_for_user
这样这个类就不必担心 user 是否为 nil。它只需要担心返回电子邮件。
user.id.nil? ? <default return val here> : @data[user.id]["email"]
或者,如果您不想返回任何东西:
@data[user.id]["email"] if user.id