データベースの世界のNULLは偽ではない
Railsの世界に浸かっていると基本的なことを忘れる。戒めメモ
1User.all.pluck(:type).tally
2=> {nil => 26, "aaa" => 9, "bbb" => 1, "ccc" => 2}
3User.where.not(type: "bbb").count
4=> 11
この結果が直感的でなかった(nilも含まれると思っていた)けど、よく考えたらデータベースの世界では3値論理でNULL != falseだった。
1User.where.not(type: nil)
で何らかの値が入っているレコードが取れることを考えると、そこまで不思議ではなかった
ちなみにnilも含めたい場合はorを使う
1User.where.not(type: "bbb").or(User.where(type: nil))