devise_for
crea rutas que incluyen una ruta DELETE, que queremos eliminar, y devise_for
no admite un : excepto
o : sólo la opción
.
¿Cómo puedo eliminar una ruta de Rails.application.routes
? ¿O en el bloque draw
, o después?
Aquí hay detalles de un error, que fue la razón por la que necesitábamos eliminar la ruta.
estábamos emitiendo una solicitud DELETE a un controlador UJS personalizado action
en la acción del controlador estábamos eliminando lo que queríamos, luego haciendo una redirección 302. Esta fue una mala idea, y desde entonces la hemos corregido devolviendo algo de JSON en su lugar.
Este error se ha corregido, pero me gustaría eliminar la ruta de todos modos.
Esto es lo que hice al final, que fue sugerido por el ganador de la recompensa en su cita de Jose´ Valim:
En config / routes.rb
, agregué esto sobre el devise_for
llamada, que configura el resto de mis rutas de 'people'
:
delete '/person', :to => 'people#destroy'
Luego, en mi people_controller.rb
existente, agregué un método sin operación :
def destroy
render :nothing => true
end
Todavía me molesta un poco que no haya una forma sencilla de eliminar la ruta del RouteSet. Además, la ruta delete
todavía existe para el controlador del dispositivo, pero no se llamará porque rails busca la primera coincidencia en config / routes.rb
y la devuelve.