使用Rails 3查询或meta_where“不是真的”

时间:2011-03-01 10:25:37

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

我需要的可能很简单:

Table.where('field is not true')

但我无法想象如何使用Rails 3查询界面完成此操作,并且可能使用meta_where。问题是,当“:field.not_eq => nil”正确转换为“IS NOT NULL”时,“:field.not_eq => true”变为“!= 1”,这显然与“IS”不同不是“(mysql和postgresql扩展名)。

2 个答案:

答案 0 :(得分:2)

mysql中没有布尔值,请参阅:http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html

  

BOOL,BOOLEAN

     

这些类型是TINYINT(1)的同义词。值为零被视为false。非零值被认为是真的:

如你所见,布尔值总是微小的转换为1或0,这就是为什么rails会创建“field!= 1”而不是字段的原因。

不确定postgresql通过。

答案 1 :(得分:0)

这将是一个创建github分支的绝佳机会:)它是完全应该添加到meta_where的功能。