includes
Metoda AREL wybierze między dwiema strategiami tworzenia zapytania, z których jedna po prostu wykonuje dwa różne zapytania, a druga wykonuje INNER JOIN. W obu przypadkach produkty będą różne.
Musisz ręcznie wykonać prawe sprzężenie zewnętrzne:
Product.joins('RIGHT JOIN categories ON categories.product_id = products.id').where(categories: { id: @my_product.categories.pluck(:id) } )
dodaje również .preload(:categories)
jeśli chcesz zachować niecierpliwe ładowanie kategorii.