Това е друг подход.
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)")
Дори идеята за ORM е, че абстрахирате SQL, в този вид сложна заявка, мисля, че е по-добре да изберете най-простото решение и да не усложнявате заявката още повече.