根据activerecord中的某些给定条件更新表值的最佳方法是什么我试过了

  Suggestion.update(:active => 1).where({:item_id => 2, :user_id => 100})

但它不起作用Update方法需要另一个参数(id)如果我这样更改查询,
  suggest = Suggestion.where({:item_id => 2, :user_id => 100}).select(:id)
  id = suggest.first.id
  Suggestion.Update(id,:active => 1)

这完全让我震惊。为什么我必须两次调用db来更新一个记录,在一次更新调用中就可以完成?

最佳答案

Suggestion.update_all({:active => 1}, {:item_id => 2, :user_id => 100})

=>
UPDATE "suggestions" SET "active" = 1 WHERE ("suggestions"."item_id" = 2) AND ("suggestions"."user_id" = 100)

10-01 07:01
查看更多