ruby-on-rails – 从ActiveRecord :: Relation中删除’where’子句

我在User上有一个方法,该返回对User使用复杂的select / join / order / limit,并返回该关系.它也适用于where(:admin => true)子句.是否可以删除这个特定的where语句,如果我有这个关系对象与我?

就像是

User.complex_stuff.without_where(:admin => true)

解决方法

您可以这样做(where_values包含每个查询的位置;您必须调整sql以匹配您系统上的确定输出:admin => true).请记住,只有在您尚未执行查询的情况下(即,您尚未调用它,或在视图中使用其结果),这将只起作用:
@users = User.complex_stuff
@users.where_values.delete_if { |query| query.to_sql == "\"users\".\"admin\" = 't'" }

不过,我强烈建议您使用Emily的重新配置complex_stuff方法.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...