niiicolai
niiicolai

Reputation: 73

update_all ruby on rails

Im trying to update all post where a condition is true. If the condition is true should the field category_id be set to params[:category_id]

Every time im trying to do it will my code update all post where the condition is true and set it to "--- !ruby/hash:ActionController::Parameters categori_id: '169'"

Instead of just 169.

My controller action look like this

def update_all_notes
@deletefolder = Categori.find(params[:id])
System.where(:categori_id => params[:id]).update_all(:categori_id => params[:categori_id])
redirect_to :back
end

My form look like this:

<%= form_tag update_all_notes_path(category.id) do %>
<%= collection_select :kategori_id, :id, @current_company.category.where.not(:name => category.name), :id, :name %>
<button>move</button>

this is the parameters i send to the action "categori_id"=>{"categori_id"=>"169"}, "id"=>"168"}

Thanks in advance

Upvotes: 1

Views: 835

Answers (2)

d1jhoni1b
d1jhoni1b

Reputation: 8025

Example of update_all use:

ids = [1,2,3]
records = Mammal::Human.where(id: ids)
records.update_all(status: :enlightenment, enlightenment_at: Time.zone.now, enlightenment_by: "myself")

I will rather use status: value over :status => value syntax

Upvotes: 0

Ahmad Elassuty
Ahmad Elassuty

Reputation: 4744

From your hash you should replace params[:categori_id] to be params[:categori_id][:categori_id]

as the hash is { "categori_id" => {"categori_id" => 169}, "id" => X }

Upvotes: 1

Related Questions