Achando registros orfãos com Rails

Dicas - 29/Nov/2020 - por Henrique Morato

Com uma aplicação no ar, você pode acabar alterando seu banco de dados, adicionando, apagando registros, entre outras coisas que podem tornar algumas associações órfãs.

Vamos supor que tenhamos a seguinte estrutura:

class Article < ActiveRecord
  belongs_to :author
end

class Author < ActiveRecord
  has_many :articles, dependent: :nullify
end

Agora, ao apagar autores, os artigos vão permanecer na base, mas o author_id ficará nulo. Só que com o que temos hoje em mãos, para encontrar esses artigos teríamos que fazer uma query como:

Article.left_joins(:author).where(authors: { id: nil })

Com essa mudança no Rails, que irá entrar na versão 6.1 (que no momento da publicação desta dica encontra-se em Release Candidate), você poderá fazer:

Article.where.missing(:author)

Tornando, assim, a query muito mais fácil de produzir e de ler!

Foto de perfil do autor
Henrique Morato

Dev