class ActiveRecord::Relation::WhereClause

def except_predicates(columns)

def except_predicates(columns)
  attrs = columns.extract! { |node| node.is_a?(Arel::Attribute) }
  non_attrs = columns.extract! { |node| node.is_a?(Arel::Predications) }
  predicates.reject do |node|
    if !non_attrs.empty? && node.equality? && node.left.is_a?(Arel::Predications)
      non_attrs.include?(node.left)
    end || Arel.fetch_attribute(node) do |attr|
      attrs.include?(attr) || columns.include?(attr.name.to_s)
    end
  end
end