Не рекомендуется смешивать маршруты отдыха с маршрутами пользовательских совпадений на одном и том же ресурсе. Как вы заметили, эти два маршрута будут перехватывать действия друг друга. Ваш лучший выбор - выбрать только одну систему маршрутизации для ресурса и придерживаться его. Если вам нужны маршруты в стиле flickr, вы должны удалить оставшийся маршрут и добавить другие необходимые маршруты для новых / create / etc, которые вам могут понадобиться. Если вы отчаянно хотите сохранить оба этих маршрута, вам нужно либо отключить шоу из маршрута отдыха, когда маршрут отдыха находится сверху, либо отключить новый из маршрута матча, пока матч находится сверху. Вы можете использовать regexp, чтобы отфильтровать некоторые запросы на совпадение, например:
match 'photos/:user' => 'photos#user', :as => :user_photo, :constraints => { :user => /.*[^n][^e][^w].*/ }
Это ужасно быстро, но я советую вообще не использовать маршрут отдыха.