【问题标题】:How do I rescue a method when there is nil user?当有 nil 用户时如何拯救方法?
【发布时间】:2012-02-28 21:45:06
【问题描述】:

有时我有 user.id == nil。当发生这种情况时,我的查找失败。拯救此代码的最实用方法是什么?发生这种情况时您通常会返回什么?

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

说一个邮件方法正在使用返回值

email(lookup).deliver

【问题讨论】:

    标签: ruby null rescue


    【解决方案1】:
    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
    

    这样这个类就不必担心 user 是否为 nil。它只需要担心返回电子邮件。

    【讨论】:

      【解决方案2】:

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

      或者,如果您不想退货:

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

      【讨论】:

        猜你喜欢
        • 2011-02-06
        • 2018-11-27
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 2010-12-15
        • 2010-10-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多