find中布尔条件的正确语法

时间:2010-03-02 01:27:16

标签: ruby-on-rails

我想搜索show属性为true的用户。

show = true
@users = User.find(:all,
               :conditions => ["show = ?", show])

这似乎对我不起作用。

4 个答案:

答案 0 :(得分:5)

你的榜样一定能奏效。如果您运行的是较旧版本的rails,则可能需要重新启动服务器。

另一个选择是使用哈希语法,如...

@users = User.find(:all, :conditions => {:show => true})

然后你可以在哈希中添加其他条件。

答案 1 :(得分:3)

尝试查询的替代版本:

User.find_all_by_show(true)

确保users表格中有一个名为tinyint(1)的{​​{1}}(即boolean)列。

我以前见过这种行为。对于数组条件,我必须对show 1使用0 / true。试试这个:

false

答案 2 :(得分:1)

语法看起来对我来说。

您的development.log显示了什么?查询SQL应该在执行时出现。

答案 3 :(得分:0)

你正在使用哪个数据库? mysql还是sqlite?

在mysql中,布尔值存储为1和0,它与其他数据库不同,因此在迁移时指定的默认值为1。

请再次检查,然后重试。

正如Toby Hede所说,您可以检查日志中生成的查询,并尝试在查询浏览器或其他任何内容中运行该查询,并查看您是否获得了预期结果。