Rails #rewhere Método ActiveRecord

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 …