Đây là một cách tiếp cận khác.
Offer.find_by_sql("SELECT * FROM offers o WHERE NOT EXISTS (SELECT * FROM products WHERE products.offer_id = o.id AND service_id IS NULL)")
Ngay cả khi ý tưởng về ORM là bạn trừu tượng hóa SQL, trong loại truy vấn phức tạp này, tôi nghĩ tốt hơn nên chọn giải pháp đơn giản nhất và không làm phức tạp thêm truy vấn.