Ram*_*Vel 1 ruby activerecord ruby-on-rails
根据activerecord中的某些给定条件更新表值的最佳方法是什么?我试过这个
Suggestion.update(:active => 1).where({:item_id => 2, :user_id => 100})
Run Code Online (Sandbox Code Playgroud)
但它不起作用.Update方法需要另一个参数(id).如果我像这样更改查询,
suggest = Suggestion.where({:item_id => 2, :user_id => 100}).select(:id)
id = suggest.first.id
Suggestion.Update(id,:active => 1)
Run Code Online (Sandbox Code Playgroud)
这彻底打击了我.为什么我必须对db进行两次调用才能更新可以在单个更新调用中完成的记录?
Suggestion.update_all({:active => 1}, {:item_id => 2, :user_id => 100})
Run Code Online (Sandbox Code Playgroud)
UPDATE "suggestions" SET "active" = 1 WHERE ("suggestions"."item_id" = 2) AND ("suggestions"."user_id" = 100)
Run Code Online (Sandbox Code Playgroud)