To je další přístup.
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)")
Dokonce i myšlenka ORM spočívá v tom, že abstrahujete SQL, v tomto druhu složitého dotazu si myslím, že je lepší vybrat nejjednodušší řešení a nekomplikovat dotaz ještě více.