Antes de tudo, isso realmente depende se você deseja ou não usar uma abordagem Arel pura ou se o SQL é bom. O primeiro é IMO somente recomendável se você pretende criar uma biblioteca, mas desnecessário se estiver criando um aplicativo em que, na realidade, é altamente improvável que você esteja alterando seu DBMS ao longo do caminho (e, se o fizer, alterando algumas consultas manuais provavelmente serão o menor dos seus problemas).
Supondo que o uso do SQL seja bom, a solução mais simples que deve funcionar em praticamente todos os bancos de dados é:
Order.where("(SELECT COUNT(*) FROM line_items WHERE line_items.order_id = orders.id AND line_items.discount_applied IS NULL) = 0")
Isso também deve funcionar praticamente em qualquer lugar (e tem um pouco mais de Arel e menos SQL manual):
Order.left_joins(:line_items).where(line_items: { discount_applied: nil }).group("orders.id").having("COUNT(line_items.id) = 0")
Dependendo do DBMS específico (mais especificamente: seu respectivo otimizador de consulta), um ou outro pode ter melhor desempenho.
Espero que ajude.