我有文章模型
Article.last.publish
=> nil
Article.last.publish != true
=> true
Article.where("publish != ?", true)
=> []
为什么我在那里得到一个空数组?
答案 0 :(得分:0)
尝试Article.where(publish: false)
答案 1 :(得分:0)
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)
表示发布值不为true的所有文章,表示错误
和false不等于nil。
nil和false是两个不同的假值。