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

Problème lors de la récupération d'enregistrements avec un tableau vide

Dans Rails 4, vous pouvez utiliser User.where.not(id: []) qui vous donnera le bon résultat. Il produit :

SELECT "users".* FROM "users" WHERE (1 = 1)

Malheureusement User.where('id NOT IN (?)', []) devrait être équivalent mais ce n'est pas le cas. Cela vous donne toujours le mauvais résultat :

SELECT "users".* FROM "users" WHERE (id NOT IN (NULL))

Références :

  • https://github.com/rails/rails/issues/778
  • https://github.com/rails/arel/commit/cbff1bcf
  • https://github.com/rails/rails/pull/8332
  • https://github.com/rails/rails/commit/8d02afeaee8993bd0fde69687fdd9bf30921e805