web-dev-qa-db-fra.com

Comment écrire mettre à jour toutes les requêtes conditionnelles dans Rails 4

Je veux des requêtes Rails similaires à:

UPDATE users SET name="test" WHERE name="test1"
18
Vijay Chouhan
User.update_all({name: 'test'},{name: 'test1'}) # deprecated since Rails 4

ou

User.where(name: 'test1').update_all(name: 'test')
40
arieljuod
User.where("name like 'test1'").update_all("name = 'test'")
7
Peter Nixey

@Vijay Chouhan, Essayez celui-ci, cela vous donnera la même requête que nécessaire.

User.where (name: "test") -> Ceci vous donnera le tableau ActiveRecord :: Relation afin de le convertir en tableau simple comme 

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

si u.count est égal à 1, utilise ceci comme requête finale -

**** Requête finale -> **** User.where (nom: "test"). to_a.first.update (nom: "test1")

else u.count est supérieur à 1, puis crée une boucle comme

**** Requête finale -> **** User.where (nom: "test"). to_a.each {| x | x.update (name: "test1")}

Cela peut vous être utile ....

                                **OR**

Hey @Vijay Chouhan, 

Tout à l'heure, j'ai trouvé la meilleure solution:

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

0
Chitra