0

我有一个文章模型

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

为什么我在那里得到一个空数组?

4

2 回答 2

0

ruby 中只有 2 个虚假值:falsenil

因此,如果您检查 的值,!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 是两个不同的假值。

于 2013-05-08T08:45:04.100 回答
0

尝试Article.where(publish: false)

于 2013-05-08T08:35:21.543 回答