PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Problem beim Abrufen von Datensätzen mit leerem Array

In Rails 4 können Sie User.where.not(id: []) verwenden was Ihnen das richtige Ergebnis liefert. Es erzeugt:

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

Leider User.where('id NOT IN (?)', []) sollte gleichwertig sein, ist es aber nicht. Es gibt Ihnen immer noch das falsche Ergebnis:

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

Referenzen:

  • 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