2014-04-06 2 views
0

В попытке иметь более мелкие методы, я перемещаю некоторые части из метода в более мелкие частные методы. Однако в одном приватном методе я выполняю некоторую обработку ошибок и хотел бы выйти из метода, который называется private, а не только самого частного метода. Действительно простой пример, но:Возврат в метод, который называется private method

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

Fair, но это не существенно отличается от выполнения определения функции общественного method' 'OBJ = private_method' ' return "BlahBlah", если obj.nil? ' ' end' , который является тем, чего я пытаюсь избежать. Я буду вызывать пару различных частных методов в общедоступном методе и предпочел бы сохранить всю обработку ошибок в каждом приватном методе, просто чтобы держать вещи в жестких связанных фрагментах. –

 Смежные вопросы

  • Нет связанных вопросов^_^