2017-05-07 2 views
0

J'essaye d'enrouler une action dans une transaction, mais la transaction ne fonctionne pas sauf si une exception est levée. Donc, en gros, j'essaie de faire une erreur, mais continuez sur la page avec 500. Voici ce que je fais actuellement.Soulever une exception mais pas un code 500 - Rails

def update 
    resource.transaction do 
     super do |user| 
     if membership_params.present? 
      ToggleAlertEmails.perform(user: current_user, params: membership_params) 
     end 

     if user.errors[:current_password].present? 
      raise IncorrectError 
      render :edit 
     end 
     end 
    end 
    end 

qui soulèvent cette erreur RegistrationsController::IncorrectError:

Cela semble correct, mais je peux rendre tout simplement l'action d'édition au lieu de 500 pages?

Répondre

0

Vous avez besoin rescue_from dans votre contrôleur

rescue_from RegistrationsController::IncorrectError, with: :show_500 

def show_500(exception) 
    @exception = exception 
    render :template => "/500.html", :status => 500 
end 
+0

que je pouvais faire quelque chose comme ça - 'render: modifier, statut: 200'? – Bitwise

+0

@Bitwise Bien sûr, 'render' accepte généralement cinq options:: content_type,: layout,: location,: status,: formats. – fangxing

+0

Où irait ce code? dans un modèle? – Bitwise