Como aporte, es posible obtener los productos desde el shopping_cart directamente agregando está linea en el modelo shopping_cart
has_many :products, through: :shopping_cart_products
De igual manera, en el modelo producto si agregamos la siguiente linea podemos obtener desde una instancia del modelo product todos los carritos activos que tienen relación con el producto.
has_many :shopping_carts,-> {where("shopping_carts.active").order(created_at: :desc)}, through: :shopping_cart_products