PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Rails - obtenha objetos de objetos COM duplicatas


O includes O método do AREL escolherá entre duas estratégias para fazer a consulta, uma das quais simplesmente faz duas consultas distintas e a outra faz um INNER JOIN. Em ambos os casos os produtos serão distintos.

Você tem que fazer manualmente uma junção externa direita:
Product.joins('RIGHT JOIN categories ON categories.product_id = products.id').where(categories: { id: @my_product.categories.pluck(:id) } )

adiciona também .preload(:categories) se você quiser manter o carregamento antecipado das categorias.