仅获取Rails中Column = 0的数据

时间:2011-12-05 14:45:37

标签: ruby ruby-on-rails-3 activerecord

我有一个包含0或1的列。如果列中有0,我想在视图中显示它。

在我的控制器中,我有类似的东西:

def read
    @title = "Something"
    @posts = Post.where('read' == 0)  
end

出于某种原因,即使读取的值为1,它也会获得所有帖子。我可能做错了什么?

2 个答案:

答案 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中构造散列时使用的代码。