2014-04-06 2 views
0

작은 메서드를 갖기 위해 메서드의 일부를 작은 개인 메서드로 옮깁니다. 그러나 한 개인 메서드에서 일부 오류 처리를 수행하고 개인 메서드 자체를뿐만 아니라 개인 메서드를 호출하는 메서드 밖으로 벗어나고 싶습니다. 정말 기본적인 예 :하지만,private 메서드를 호출하는 메서드에서 반환

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' ' obj.nil의 경우 "BlahBlah"를 반환하십시오. 'end' 이는 피하려고하는 것입니다. 공용 메서드에서 몇 가지 다른 개인 메서드를 호출 할 것이고 각 개인 메서드 내에서 모든 오류 처리를 유지하는 것이 좋을 것입니다. 단단한 관련 청크를 유지하는 것입니다. –

관련 문제