我正在從Rails模型調用API,如果API返回非200代碼,我想提出一個錯誤。否則,我想緩存/延遲加載數據。這是我的方法:如何在Ruby中返回一個值或有條件地引發錯誤?
def data
@data ||= SNL.get_list(name)
raise StandardError, @data.inspect unless @data.success?
@data
end
這個工程,但我想知道如果我能完成這一行。我嘗試使用and
運算符與unless
結合使用,但無法使其運行。
更新:我已經接受tokland的答案,因爲我問了一條線,他/她提供了兩個非常好的解決方案。最後,我實際上要使用
def data
@data ||= SNL.get_list(name)
@data.success? ? @data : (raise StandardError, @data.inspect)
end
爲了便於閱讀。我只是爲了返回@data
而討厭第三條線,因爲很少會出現異常。我覺得odiszapc的答案是簡潔和可讀性的最佳折衷。感謝大家。
您是否嘗試過使用'tap'? –