Это работает, потому что вы следуете «Соглашению о конфигурации».
Если вы заявите, что модель клиента имеет много заказов, то rails ожидает, что в таблице заказов будет поле customer_id.
Если вы следовали этим соглашениям, то rails будет их использовать и сможет собрать необходимый SQL, чтобы найти все заказы для данного клиента.
Если вы посмотрите файл development.log при разработке вашего приложения, вы сможете увидеть, как создается необходимый SQL для выбора всех заказов для данного клиента.
Rails не создает таблицы без вашего ведома. Создание таблиц достигается путем создания миграции, которая будет создавать / изменять таблицы для вас. Тот факт, что вы создаете модель клиента, а затем утверждаете, что она has_many: orders, не создаст вам таблицу заказов. Вам нужно будет сделать это для себя самостоятельно в рамках миграции, чтобы создать таблицу заказов. В рамках этой миграции вам нужно будет либо добавить столбец customer_id, либо использовать инструкцию own_to: customer, чтобы добавить поле customer_id в таблицу заказов.