私は記事モデルを持っています
Article.last.publish
=> nil
Article.last.publish != true
=> true
Article.where("publish != ?", true)
=> []
そこに空の配列が表示されるのはなぜですか?
私は記事モデルを持っています
Article.last.publish
=> nil
Article.last.publish != true
=> true
Article.where("publish != ?", true)
=> []
そこに空の配列が表示されるのはなぜですか?
試すArticle.where(publish: false)
ruby には 2 つの偽値しかありません:false
とnil
したがって、の値を確認すると!nil
、出力は次のようになりますtrue
だからあなたの最初の声明で
Article.last.publish # its output is nil
次に、2番目のステートメント
Article.last.publish != true # this is correct , since !nil = true
でも最後のやつ
Article.where("publish != ?", true)
としてクエリに変換されます
SELECT `articles`.* FROM `articles` WHERE (publish != 1)
これは、publish 値が true でないすべての記事を意味し、false を意味します
false は nil と等しくありません。
nil と false は、2 つの異なる false 値です。