지불 상태 문자열 필드가있는 주문 모델이 있습니다. 일반적으로이 필드는 채워 져야하지만 때로는 nil입니다. 다음 범위가 있습니다where.not with Rails를 사용할 때 혼란스러운 결과
scope :not_pending, -> { where.not(payment_status: 'pending') }
내 테스트 중 하나에서 payment_status는 주문에 대해 nil이지만 범위에 대해 여전히 빈 결과를 얻습니다. 내가 .not을 제거하기 위해 그것을 변경하면, 나는 빈 결과를 다시 얻게되어 약간 혼란 스럽습니다.
편집 - 추가 된 SQL
"SELECT "orders".* FROM "orders" INNER JOIN "order_compilations" ON "orders"."id" = "order_compilations"."order_id" WHERE "order_compilations"."menu_group_id" = 3724 AND ("orders"."payment_status" != 'pending')"
생성 된 SQL 문을보고 – emaillenin