PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Rails:ottieni oggetti di oggetti CON duplicati

Il includes il metodo di AREL sceglierà tra due strategie per eseguire la query, una delle quali esegue semplicemente due query distinte e l'altra esegue un INNER JOIN. In entrambi i casi i prodotti saranno distinti.

Devi fare manualmente un join esterno destro:

Product.joins('RIGHT JOIN categories ON categories.product_id = products.id').where(categories: { id: @my_product.categories.pluck(:id) } )

aggiunge anche .preload(:categories) se vuoi mantenere il caricamento ansioso delle categorie.