If you're using table aliases like "O" you're already throwing clarity out the window. The following is perfectly clear and readable IMO:
Orders.id = Customers.order_id
and also indicates which column is the primary key and which is the foreign key. What about other column names duplicated across tables, should Orders.created_at = Customers.created_at
become Orders.order_created_at = Customers.customer_created_at
Scope exists for a reason, don't be afraid to use it!