Der includes
Methode von AREL wird zwischen zwei Strategien wählen, um die Abfrage durchzuführen, von denen eine einfach zwei unterschiedliche Abfragen und die andere einen INNER JOIN durchführt. In beiden Fällen werden die Produkte unterschiedlich sein.
Sie müssen manuell einen Right Outer Join erstellen:
Product.joins('RIGHT JOIN categories ON categories.product_id = products.id').where(categories: { id: @my_product.categories.pluck(:id) } )
fügt auch .preload(:categories)
hinzu wenn Sie das eifrige Laden der Kategorien beibehalten möchten.