如何在rails 4中编写更新所有条件查询

时间:2013-11-20 17:14:30

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我希望rails查询类似于:

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

4 个答案:

答案 0 :(得分:43)

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

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

答案 1 :(得分:7)

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

答案 2 :(得分:0)

@Vijay Chouhan, 试试这个,这将提供您所需的相同查询。

User.where(名称:“test”) - >这将为您提供ActiveRecord :: Relation数组,因此将其转换为简单数组,如

u = User.where(名称:“test”)。to_a

如果u.count 等于1,则将其用作最终查询 -

**** final Query - > **** User.where(name:“test”)。to_a.first.update(name:“test1”)

其他u.count 大于1,然后像

一样循环

**** final Query - > **** User.where(name:“test”)。to_a.each {| x | x.update(名称:“test1”)}

这对你有帮助....

                                **OR**
嘿@Vijay Chouhan,

刚才我找到了最好的解决方案 -

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

答案 3 :(得分:0)

单次检查

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

如果您需要多个

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