where.not を使っていて遭遇した問題についてrailsdmの懇親会で話していたら、@kamipo さんから「5.2では少し直っている」という情報を頂いた。 この話をしているときに思ったけど、今の where.not の問題点について知らない人も多そうなので、せっかくなのでブログにまとめてみた。 where.notの問題 where.not のドキュメントにいくつか例がある。 問題は複数の条件を引数で指定した場合。 User.where.not(name: "Jon", role: "admin") # SELECT * FROM users WHERE name != 'Jon' AND role != 'admin' これはド・モルガンの法則でORになりそうなのに、なっていない。 # ド・モルガンの法則 # NOT(A AND B) = NOT(A) OR NOT(B) # つま