我有一个文章模型
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)
=> []
为什么我在那里得到一个空数组?
ruby 中只有 2 个虚假值:false
和nil
因此,如果您检查 的值,!nil
则输出将是true
所以你的第一个陈述
Article.last.publish # its output is nil
然后你的第二个陈述
Article.last.publish != true # this is correct , since !nil = true
但是最后一个
Article.where("publish != ?", true)
被转换为查询
SELECT `articles`.* FROM `articles` WHERE (publish != 1)
表示所有发布值不为真的文章,即为假
并且 false 不等于 nil。
nil 和 false 是两个不同的假值。
尝试Article.where(publish: false)