Mi formulario de registro, que es un formulario para el modelo de Usuarios, toma un valor de cadena para la empresa. Sin embargo, acabo de hacer un cambio para que los usuarios pertenezcan a empresas. Por lo tanto, necesito pasar un objeto de Empresa al modelo de Usuarios.
Quiero usar el valor de cadena del formulario para obtener el objeto de Company:
@user.company = Company.find_by_name(params[:company])
Creo que lo anterior funciona, sin embargo, el formulario está pasando: empresa (que es una cadena) al modelo cuando llamo:
@user = User.new(params[:user])
Por lo tanto, quiero saber (y no puedo encontrar cómo) eliminar el parámetro: company antes de pasarlo al modelo de usuario.
fuente
model_params.delete :key_name
no funciona, ¿alguna idea de por qué?assin_params = params.dup.delete(:company)
. nunca elimine de los parámetros directamenteassign_params = params.dup; assign_params.delete(:company)
model_params
era una función, que sacó los parámetros relevantes deparams
. Así que cuando sedelete
demodel_params
que estás realmente sólo la supresión a partir del hash quemodel_params
regresa.Probablemente deberías usar hash, excepto
Logra 2 cosas: le permite excluir más de 1 clave a la vez y no modifica el hash original.
fuente
"-1"
como clave? {"utf8" => "✓", "_method" => "parche", "autenticity_token" => "VtY ...", "folleto" => {"title" => "Hola mundo", "profilings_attributes" => {"-1" => {"member_profile_id" => "3"}, "0" => {"porcentaje" => "10.0", "descripción" => "¡Alguna descripción!", "_Destroy" = > "false", "id" => "10"}, "1" => {...}}, "sponsorings_attributes" => {"-1" => {"sponsor_id" => "2"}, "0" => {"folleto_id" => "La forma correcta de lograr esto es usando
strong_params
De esta manera, tiene más control sobre qué parámetros deben pasarse al modelo
fuente
esto eliminará los parámetros de la URL
fuente
Para que sea posible eliminarlo, puede hacer una nota :
Ahora puedes hacer:
fuente