Masz dobry wynik w obu przykładach.
Jeśli używasz tylko count
w select zawsze otrzymujesz numer jako wynik zapytania. Więc wynik z bazy danych jest oczekiwany.
W przypadku railsów próbujesz uzyskać jakiś zestaw rekordów przez scope
z count
w oświadczeniu select. Można spodziewać się pustego zestawu, jeśli masz count
w zapytaniu.
Wypróbuj count_by_sql
metoda http://apidock.com/rails/ActiveRecord/Base/count_by_sql/class aby uzyskać liczbę rekordów zamiast pustego zestawu.
I używaj go bez zakresu, ale z metodą klasy:
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