C'è il seguente codice:Come rilevare le eccezioni nelle azioni del controllore in modo corretto?
def index
@posts = User.find_by(login: params[:user_id]).posts
end
Come si può vedere questo codice può generare un'eccezione se non c'è alcun utente con un po 'di accesso (un'eccezione di puntatore nullo). Come posso rilevare questa eccezione e gestirla correttamente? So come catturare le eccezioni in Ruby, ma voglio sapere come fare in un buon stile di Rails. Lo stesso problema può verificarsi in diversi controller: potrebbe essere necessario creare un wrapper di azione, rilevare l'eccezione e rendere l'errore 500?
è possibile usare [ 'rescue_from'] (http://edgeapi.rubyonrails.org/classes/ActiveSupport/Rescuable/ClassMethods.html) –
buona stile di rotaie non è quello di consentire l'eccezione (almeno quella) per essere sollevato. quindi puoi usare il modulo anither: 'posts = User.where (login: params [: user_id]). first.try (: posts)' –
E le eccezioni di integrazione o qualcos'altro? Questo dovrebbe essere fatto in BaseController, o dovresti avvolgere ogni azione nei blocchi try-catch (le rotaie iniziano - rescue)? – Miknash