我有一个包含0或1的列。如果列中有0,我想在视图中显示它。
在我的控制器中,我有类似的东西:
def read
@title = "Something"
@posts = Post.where('read' == 0)
end
出于某种原因,即使读取的值为1,它也会获得所有帖子。我可能做错了什么?
答案 0 :(得分:2)
正确的表单是Post.where(:read => 0)
您当前的表单所做的是将字符串'read'
与值0
进行比较。如果我们将这个比较输入Ruby控制台,我们可以看到发生了什么:
> 'read' == 0
=> false
因此,该比较正在返回false
。如果您只是在控制台中键入Post.where(false)
,您会看到它返回所有Post
条记录,这就解释了为什么要返回每个Post
个对象。换句话说,您键入的行等同于键入Post.where(false)
答案 1 :(得分:1)
您使用的格式错误。您收到帖子的电话应如下所示:
@posts = Post.where(:read => 0)
尝试阅读activerecord documentation并查看Conditions
部分。如果您使用散列表示法进行指定,则必须使用在Ruby中构造散列时使用的代码。