Имате правилен резултат и в двата примера.
Ако използвате само count
в select винаги получавате число като резултат от заявка. Така че вашият резултат от базата данни е очакван.
В случай на релси се опитвате да получите някакъв набор от записи по scope
с count
в оператора select. Очаква се да получите празен набор, ако имате count
във вашата заявка.
Опитайте count_by_sql
метод http://apidock.com/rails/ActiveRecord/Base/count_by_sql/class за да получите брой записи вместо празен набор.
И го използвайте без обхват, но с метод на клас:
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