我需要的可能很简单:
Table.where('field is not true')
但我不知道这是如何使用 Rails 3 查询接口完成的,可能还有meta_where。问题是虽然 ":field.not_eq => nil" 正确转换为 "IS NOT NULL",但 ":field.not_eq => true" 变成 "!= 1",这显然与 "IS NOT TRUE" 不同"(mysql 和 postgresql 扩展)。
我需要的可能很简单:
Table.where('field is not true')
但我不知道这是如何使用 Rails 3 查询接口完成的,可能还有meta_where。问题是虽然 ":field.not_eq => nil" 正确转换为 "IS NOT NULL",但 ":field.not_eq => true" 变成 "!= 1",这显然与 "IS NOT TRUE" 不同"(mysql 和 postgresql 扩展)。
mysql 中没有布尔值,请参阅:http ://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html
布尔值,布尔值
这些类型是 TINYINT(1) 的同义词。零值被认为是错误的。非零值被认为是真的:
如您所见,布尔值始终是转换为 1 或 0 的小整数,这就是为什么 rails 会创建“字段!= 1”而不是字段不正确的原因。
不确定postgresql是否通过。
这将是创建 github 分支的绝佳机会 :) 这完全是一个应该添加到 meta_where 的功能。