Dette er en anden tilgang.
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)")
Selv gør ideen med en ORM, at du abstraherer SQL, i denne form for kompleks forespørgsel, tror jeg, det er bedre at vælge den enkleste løsning og ikke komplicere forespørgslen endnu mere.