PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Mettre à jour plusieurs enregistrements dans une transaction ActiveRecord dans Rails

Supposons que vous saviez que vous vouliez définir les choses avec les identifiants 1, 2 et 3 pour avoir des scores, 2, 8 et 64 (par opposition à des nombres aléatoires), vous pourriez :

UPDATE 
  things AS t
SET
  score = c.score
FROM 
  (values
    (1, 2),
    (2, 30),
    (4, 50)
  ) as c(id, score) 
 where c.id = t.id;

Donc avec Rails, vous utiliseriez ActiveRecord::Base.connection#execute pour exécuter un bloc similaire à celui ci-dessus, mais avec la chaîne de valeur correcte interpolée.