Tienes el resultado correcto en ambos ejemplos.
Si usa solo count
en seleccionar siempre obtuvo un número como resultado de la consulta. Entonces su resultado de la base de datos es esperable.
En el caso de Rails, intenta obtener un conjunto de registros por scope
con count
en declaración selecta. Es de esperar que tenga un conjunto vacío si tiene count
en su consulta.
Prueba count_by_sql
método http://apidock.com/rails/ActiveRecord/Base/count_by_sql/class para obtener el número de registros en lugar de un conjunto vacío.
Y utilícelo sin alcance, pero con el método de clase:
def self.unverified_with_no_associations()
self.count_by_sql("SELECT COUNT(DISTINCT(accounts.id, accounts.email)) FROM accounts WHERE level = 0 AND id NOT IN
(SELECT DISTINCT(account_id) FROM verifications) AND id NOT IN
(SELECT DISTINCT(account_id) FROM positions) AND id NOT IN
(SELECT DISTINCT(account_id) FROM edits) AND id NOT IN
(SELECT DISTINCT(account_id) FROM posts) AND id NOT IN
(SELECT DISTINCT(account_id) FROM reviews) AND id NOT IN
(SELECT DISTINCT(sender_id) FROM kudos) AND id NOT IN
(SELECT DISTINCT(account_id) FROM stacks WHERE account_id IS NOT NULL)")
end