本文介绍了有没有办法反转 ActiveRecord::Relation 查询?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我们有以下内容:
irb> Post.where(:hidden => true).to_sql
=> "SELECT `posts`.* FROM `posts` WHERE posts.hidden = 1"
我们能否以某种方式从中获取反向 SQL 查询?
我在找什么,应该是这样的:
What I am looking for, should probably look like this:
irb> Post.where(:hidden => true).invert.to_sql
=> "SELECT `posts`.* FROM `posts` WHERE NOT (posts.hidden = 1)"
推荐答案
使用不同的语法,是的.示例:
With a different syntax, yes. Example:
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))
这篇关于有没有办法反转 ActiveRecord::Relation 查询?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!