Ho una tabella di circa 100 utenti e ho anche una matrice di ID utente. Quello che volevo fare è mostrare tutti gli utenti che non fanno parte di questo array di ID utente. Quando faccio qualcosa del genereProblema durante il recupero di record con array vuoto
User.where('id NOT IN (?)', [9, 2, 3, 4])
Restituisce correttamente i record in cui l'id dell'utente non appartiene a tale array. Tuttavia, se tale matrice è vuota in questo modo
User.where('id NOT IN (?)', [])
Esso non restituisce alcun utente indietro e la query SQL assomiglia a questo
SELECT "users".* FROM "users" WHERE (id NOT IN (NULL))
Qualcuno sa perché questo accade o questo potrebbe essere un bug? Sto usando Rails 3.2.5 con PostgreSQL.
Che assomiglia a un problema di Rails o forse un problema di gemma 'Pg'; tratta un array vuoto come 'NULL'. Molto strano - e cattivo comportamento. Puoi testare una dichiarazione preparata con la gemma 'Pg' direttamente per vedere se tratta i parametri dell'array in quel modo o se è il livello Rails/ActiveRecord a farlo? –
@CraigRinger: Sarà un problema Rails/ActiveRecord e non un problema 'pg'. AR gestisce i segnaposti stessi. –
@CraigRinger: a volte le persone AR sono sorprendenti in modo anomalo in SQL, lo fanno apposta. Inserisci qui l'immagine "figlio, mi delude". –