Как написать обновить все условно запросы в rails4

Я хочу рельсы запросов, похожих на:

UPDATE users SET name="test" WHERE name="test1"

Ответ 1

User.update_all({name: 'test'},{name: 'test1'}) # deprecated since Rails 4

или

User.where(name: 'test1').update_all(name: 'test')

Ответ 2

User.where("name like 'test1'").update_all("name = 'test'")

Ответ 3

Для разовой проверки

User.where(name: 'test1').update_all(name: 'test')

Если вам требуется несколько

User.where(name: ['test1','test2']).update_all(name: 'test')

Ответ 4

@Виджей Чохан, Попробуйте это, это даст тот же запрос, что и вам.

User.where(name: "test" ) → это даст вам массив ActiveRecord:: Relation, чтобы преобразовать его в простой массив, например

u = User.where(name: "test" ). to_a

, если u.count равен, равному 1, затем используйте это как окончательный запрос -

**** final Query → **** User.where(name: "test" ). to_a.first.update(name: "test1" )

else u.count больше 1, затем создайте цикл, подобный

**** final Query → **** User.where(name: "test" ). to_a.each {| x | x.update(name: "test1" )}

Это может быть полезно для вас....

                                **OR**

Эй @Виджей Чохан,

Сейчас я нашел лучшее решение, которое есть -

User.where(name: test).update_all ( "name = 'test1'" )