Detta är ett annat tillvägagångssätt.
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)")
Även tanken med en ORM är att du abstraherar SQL, i den här typen av komplexa frågor tror jag att det är bättre att välja den enklaste lösningen och inte komplicera frågan ännu mer.