Rails способ обновления данных на основе условий - PullRequest
1 голос
/ 21 апреля 2011

Каков наилучший способ обновления табличных значений на основе заданного условия в activerecord?Я пробовал это

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

, но это не работает.Метод обновления ожидает другой параметр (id).Если я изменю запрос следующим образом,

  suggest = Suggestion.where({:item_id => 2, :user_id => 100}).select(:id)
  id = suggest.first.id
  Suggestion.Update(id,:active => 1)

, это меня просто потрясетПочему мне нужно сделать два вызова в db, чтобы обновить запись, если это можно сделать за один вызов обновления?

1 Ответ

6 голосов
/ 21 апреля 2011
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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...