Meu formulário de registro, que é um formulário para o modelo Usuários, assume um valor de string para empresa. No entanto, acabei de fazer uma alteração para que os usuários pertençam a empresas. Portanto, preciso passar um objeto da Empresa para o modelo Usuários.
Quero usar o valor da string do formulário para obter um objeto da Empresa:
@user.company = Company.find_by_name(params[:company])
Acredito que o acima funcione, mas a forma está passando: company (que é string) para o modelo quando eu chamo:
@user = User.new(params[:user])
Portanto, desejo saber (e não consigo encontrar como) remover o parâmetro: company antes de passá-lo para o modelo de usuário.
fonte
model_params.delete :key_name
não funciona - alguma ideia do porquê?assin_params = params.dup.delete(:company)
. nunca exclua dos parâmetros diretamenteassign_params = params.dup; assign_params.delete(:company)
model_params
era uma função, que puxou os parâmetros relevantes deparams
. Então, quando vocêdelete
demodel_params
que você está realmente apenas apagar a partir do hash quemodel_params
retorna.Você provavelmente deveria estar usando hash.except
Ele realiza 2 coisas: permite que você exclua mais de 1 chave por vez e não modifica o hash original.
fonte
"-1"
como chave. {"utf8" => "✓", "_method" => "patch", "authenticicity_token" => "VtY ...", "flyer" => {"title" => "Hello world", "profilings_attributes" => {"-1" => {"member_profile_id" => "3"}, "0" => {"porcentagem" => "10.0", "descrição" => "Alguma descrição!", "_Destroy" = > "false", "id" => "10"}, "1" => {...}}, "sponsorings_attributes" => {"-1" => {"sponsor_id" => "2"}, "0" => {"flyer_id" => "A maneira correta de conseguir isso é usando
strong_params
Desta forma, você tem mais controle sobre quais parâmetros devem ser passados para o modelo
fonte
isto irá remover os parâmetros do url
fonte
Para ser possível excluir, você pode fazer um memorando :
Agora você pode fazer:
fonte