Вы можете использовать эту структуру для сопоставления маршрутов, но вам нужно, чтобы коды рефералов соответствовали определенному шаблону.Если, например, они соответствуют формату 3 букв, за которыми следуют три цифры, вы можете поместить следующий файл маршрутов:
match '/:referrer_id' => 'app#index', :constraints => {:referrer_id => /[a-zA-Z]{3}[0-9]{3}/}
Ссылка на индекс app # должна быть изменена на контроллер, в котором выобрабатывать рефералы, и вы можете получить доступ к referrer_id через params [: referrer_id].
Конечно, посмотрите на ссылку, указанную в ответе Маркуса, для предложений о том, как генерировать токены.