Rails introduziu um método “rewhere” que de acordo com a documentação oficial
Permite que você altere uma condição where definida anteriormente para um determinado atributo, em vez de anexar a essa condição.
Considere que você tem uma consulta como:
Post.where(published: true) # => WHERE `published` = 1
Este código retorna todas as postagens que têm seu campo publicado definido como verdadeiro.
Considere isto:
Post.where(published: true).where(published: false) # => WHERE `published` = 1 AND `published` = 0
Este código retorna todas as postagens que têm seu campo publicado definido como verdadeiro e também aquelas definidas como falso.
Método de recompor:
Post.where(published: true).rewhere(published: false) # => WHERE `published` = 0
Este código retorna todas as postagens que têm seu campo publicado definido como falso.
O método “Rewhere” substitui a condição where nomeada.
Isso é equivalente a unscope (onde: conditions.keys) .where (conditions).
Feliz Hacking …