ruby - multiple - rails permit param
¿Cómo hacer una clave de parámetros fuertes opcional y aún así filtrar params anidados en ella? (1)
Qué pasa:
params.require(:item).permit! if params[:item]
No puede requerir un parámetro opcional. Eso es contradictorio
Editar: como mtjhax se menciona en su comentario, aquí hay un consejo para usar fetch
: params.fetch(:item, {}).permit!
Tengo esto en mi controlador:
params.require(:item).permit!
Supongamos esta especificación de rspec:
put :update, id: @item.id, item: { name: "new name" }
Funciona como se esperaba, sin error. Sin embargo, si uso esto:
put :update, id: @item.id, item: nil
ActionController::ParameterMissing
que no quiero obtener. Tiene que ver con las macros de controlador que utilizo para otras acciones y por las que no puedo controlar los parámetros que se envían (las macros comprueban las credenciales del usuario, así que realmente no me importa probar realmente una acción #update
, en vez de eso solo #update
before_filters para ello).
Entonces mi pregunta es: ¿cómo puedo hacer params[:item]
opcional, y aún así filtrar los atributos dentro de él si está presente?