0

私は記事モデルを持っています

Article.last.publish
=> nil
Article.last.publish != true
=> true
Article.where("publish != ?", true)
=> []

そこに空の配列が表示されるのはなぜですか?

4

2 に答える 2

0

試すArticle.where(publish: false)

于 2013-05-08T08:35:21.543 に答える
0

ruby には 2 つの偽値しかありません:falsenil

したがって、の値を確認すると!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 値です。

于 2013-05-08T08:45:04.100 に答える