sql - 有没有办法反转 ActiveRecord::Relation 查询?

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

假设我们有以下内容:

irb> Post.where(:hidden => true).to_sql
=> "SELECT `posts`.* FROM `posts` WHERE posts.hidden = 1"

我们能否以某种方式从中获取反向 SQL 查询?

我在找什么,应该是这样的:
irb> Post.where(:hidden => true).invert.to_sql
=> "SELECT `posts`.* FROM `posts` WHERE NOT (posts.hidden = 1)"

最佳答案

使用不同的语法,是的。例子:

posts = Post.scoped.table # or Arel::Table.new("posts")
posts.where(posts[:hidden].eq(true).not).to_sql
# => SELECT  FROM `posts` WHERE NOT ((`posts`.`hidden` = 1))

关于sql - 有没有办法反转 ActiveRecord::Relation 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5302510/

相关文章:

ruby-on-rails - 找到列可以有多个值的位置,rails

sql - 多列(每种类型一列)与单个 TEXT/Clob 列

mysql - 设置sql中where条件的默认参数

java - 如何使用 java.sql.Connection 创建 hibernate 实体管理器

ruby-on-rails - 如何让一行以 | 结尾(管道)在 HAML 中?

javascript - 在更新请求后更新 Rails 中的 Div 而不更改 View

ruby-on-rails - RoR3+Mongoid : How to compare fields of collection/table when querying?

mysql - 将所有订单运送到纽约

html - CSS 选择器优化

ruby-on-rails - 是否有像 ActiveAdmin 这样的 Rails gem 用于构建整个数据驱动站点?