PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Problema ao recuperar registros com array vazio


No Rails 4 você pode usar User.where.not(id: []) que lhe dará o resultado correto. Produz:
SELECT "users".* FROM "users" WHERE (1 = 1)

Infelizmente User.where('id NOT IN (?)', []) deveria ser equivalente, mas não é. Ainda dá o resultado errado:
SELECT "users".* FROM "users" WHERE (id NOT IN (NULL))

Referências:
  • 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