Это, вероятно, плохая идея - я бы не советовал вам это делать. Вероятно, есть лучший способ удовлетворить ваши потребности - что не так с example.com/users/123/
Однако, если вы должны это сделать, вы, вероятно, могли бы создать третий контроллер, который я назову ярлыком контроллера.
Сначала вам нужно направить на контроллер ярлыков, чтобы переменная :/name
передавалась ему для показа и редактирования. Посмотрите идеи для маршрутизации в этом Railscast .
Тогда в действиях контроллера ярлыков вам потребуется порядок приоритетов (в случае, если пользователь и проект имеют одно и то же имя), где вы сначала проверяете имя пользователя, совпадающее с данным именем, и отображаете / редактируете тот или иной вид. для проекта, а затем показать ошибку 404.
Это будет выглядеть примерно так:
def show
if @user = User.find_by_name(params[:name])
render 'users/show'
elsif @project = Project.find_by_name(params[:name])
render 'projects/show'
else
raise ActiveRecord::RecordNotFound, "Error message"
end
end
В любом случае, это, вероятно, можно заставить работать, но, опять же, я не уверен, что это хорошая идея, и я подозреваю, что в этой идее вам придется много работать. Удачи!