どのように私のクエリは、間違った解決:私はこのコードを持っている場合、更新列
@selected_ids = params[:authorization][:contract_number]
@selected_ids.zip(params[:authorization][:contract_number]).each do |id, value|
Authorization.where(contract_number: params[:authorization][:contract_number]).update_all(value_solve: params[:authorization][:value_solve], situation: 2)
end
はエラーが、私のコンソールではなかったのが
Processing by RefinancingsController#new as HTML
Parameters: {"utf8"=>"✓", "search_employee_by_cpf"=>"11111111111", "authorization"=>{"value_solve"=>["", "4345", "454", ""], "contract_number"=>["22", "33"]}, "commit"=>"Reserve"}
SQL (344.2ms) UPDATE "authorizations" SET "value_solve" = '---
- ''''
- ''4345''
- ''454''
- ''''
', "situation" = 2 WHERE "authorizations"."contract_number" IN ('22', '33')
SQL (133.1ms) UPDATE "authorizations" SET "value_solve" = '---
- ''''
- ''4345''
- ''454''
- ''''
', "situation" = 2 WHERE "authorizations"."contract_number" IN ('22', '33')
そして、私のデータベースにクエリを生成し、値は、チェックされた各チェックボックスごとに複製されます。
この例では、列value_solve、認証ID 2
---
- ''
- '4345'
- '454'
- ''
列value_solve、3
---
- ''
- '4345'
- '454'
- ''
は、ちょうどこれは、私は解決のためにこれを行う方法と、DB上で正しく保存してください許可IDですか?正しい引数を持つ2回の更新を発射する必要があり
auth_params = params[:authorization]
auth_params[:contract_number].zip(auth_params[:value_solve]).each do |contract_number, value_solve|
Authorization.where(contract_number: contract_number).update_all(value_solve: value_solve, situation: 2)
end
:あなたは2回の更新ではなく、配列値を持つ1つの更新プログラムにそれを分割する必要があり
SQL (344.2ms) UPDATE "authorizations" SET "value_solve" = "4345", "situation" = 2 WHERE "authorizations"."contract_number" IN '22'
SQL (133.1ms) UPDATE "authorizations" SET "value_solve" = "454", "situation" = 2 WHERE "authorizations"."contract_number" IN '33'
このエラーを持っている...働いてはいけない:属性は、Arrayことになってますが、文字列でした。 - "5745" In。queries –
入力パラメータをクリーンアップする必要があるようです。これは完全な解決策ではないかもしれませんが、あなたが求めている2つの更新を行うべきです。 – tadman
私は何をすべきか分かりません。私はそれを働かそうと多くの時間を費やした=( –