2014-04-06 45 views
0

爲了嘗試擁有更小的方法,我將某些方法從一個方法移動到更小的私有方法中。然而,在一個私有方法中,我正在做一些錯誤處理,並希望跳出調用私有方法的方法,而不僅僅是私有方法本身。很基本的例子,但是:返回稱爲私有方法的方法

def public method 
    private_method 

    # Do other stuff based on the results of that private method 
end 

private 

def private method 
    objects = Object.where('something') 
    return 'No objects' if objects.count == 0 
    return 'Less than 3 objects' if objects.count < 3 
    objects 
end 

如何可能我打出來的公共方法完全和基於計數的值返回,而不是僅僅返回「沒有對象」的公共方法,如果是這樣的話,。

+0

有一個更好的例子 –

回答

0

這是一個良好的使用異常處理:

def public_method 
    begin 
    private_method 
    rescue 
    return "BlahBlah" 
    end 
    # Do other stuff based on the results of that private method 
end 

private 

def private_method 
    object = Object.find(1) 
    raise "not found" if object.nil? 
    object 
end 
+0

公平編輯,但是從做 '高清公衆method'不是實質上不同 'OBJ = private_method' '返回「BlahBlah」if obj.nil?' 'end' 這就是我想要避免的。我將在公共方法中調用兩種不同的私有方法,並且寧願保留每個私有方法中的所有錯誤處理,只是爲了將事情保持在緊密相關的塊中。 –