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

发布于 2024-10-19 11:08:02 字数 325 浏览 1 评论 0原文

我需要的可能非常简单:

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 扩展)。

What I need is probably very simple:

Table.where('field is not true')

but I can't figure how this is done with Rails 3 query interface, and probably with meta_where. The problem is that while ":field.not_eq => nil" translates properly to "IS NOT NULL", ":field.not_eq => true" becomes "!= 1", which is clearly not the same as "IS NOT TRUE" (mysql and postgresql extension).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

万人眼中万个我 2024-10-26 11:08:02

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

布尔值,布尔值

这些类型是 TINYINT(1) 的同义词。零值被视为错误。非零值被视为 true:

正如您所看到的,布尔值始终是转换为 1 或 0 的tinyints,这就是为什么 Rails 将创建“field != 1”而不是 field is not true。

不确定postgresql通过。

There are no booleans in mysql, see: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html

BOOL, BOOLEAN

These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true:

As you see booleans are always tinyints which translate into 1 or 0, this is why rails will create "field != 1" instead of field is not true.

Not sure about postgresql through.

彼岸花ソ最美的依靠 2024-10-26 11:08:02

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

This would be a great opportunity to make a github branch :) It's totally a feature that should be added to meta_where.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文