どちらの例でも正しい結果が得られます。
count
のみを使用する場合 selectでは、クエリの結果として常に番号を取得します。したがって、データベースからの結果は期待できます。
Railsの場合、scope
でレコードのセットを取得しようとしています count
を使用 selectステートメントで。 count
がある場合は、空のセットを取得することが期待されます クエリで。
count_by_sql
をお試しください メソッド
そして、スコープなしで、クラスメソッドを使用して使用します:
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