2014-01-27 38 views
0

这里是我的方法:开始,随着API端点救援

def get_video_duration 
    @time ||= Panda.get("/videos/#{@video.panda_id}/metadata.json")["duration"] 
    format_duration 
end 

我需要写这个方法“好”与begin包裹它,rescue块,使@time可能是零依赖于从响应API。

+0

你想执行'Panda.get'始终,或者只有当'@ time'是零/假? –

回答

2

是的,可以使用内嵌rescue条款。

​​

或者更好地明确地做到这一点。

def get_video_duration 
    @time ||= Panda.get("/videos/#{@video.panda_id}/metadata.json")["duration"] 
rescue YourException 
    @time = nil 
    format_duration 
end 
+0

你毁了OP的逻辑。在原始问题中,尽管是否已经设置了,但在任何情况下都设置了“@ time”的懒惰实例化。 – mudasobwa

+0

@mudasobwa如果这就是OP的意思,我会删除它。让我们等待OP回来并回应,这不是他想要的。 –

+0

@ArupRakshit - 感谢您的帮助! '@ time'的懒惰实例是我的目标 – dennismonsewicz

1

也许有一个额外的方法把它分解:

def fetch_video_duration 

    Panda.get("/videos/#{@video.panda_id}/metadata.json")["duration"] 

    rescue 
    return nil 
end 

def get_video_duration 
    @time ||= fetch_video_duration 

    format_duration 
end