strong rails permit multiple ruby ruby-on-rails-4 strong-parameters

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?