Отслеживайте зарезервированные URL (чтобы включить тщеславию URL в расчете на пользователя)

На моем веб-сайте объяснения лирики рэпа у каждого пользователя есть связанная страница "избранного" в http://rapgenius.com/USERNAME

Поскольку эти страницы избранного занимают корневое пространство имен, я должен удостовериться, что никто не берет имя пользователя, которое я уже использую для чего-то еще. Например:

  • /songs
  • /lyrics
  • /users
  • /posts

Как я могу искать все пути верхнего уровня, которые имеют более высокий приоритет, чем /username маршрут (который является у основания routes.rb) во время пользовательского создания, таким образом, я могу препятствовать тому, чтобы пользователи брали эти зарезервированные имена?

7
задан Tom Lehman 24 January 2010 в 22:22
поделиться

4 ответа

- 1389143-

Почему бы не сделать вещи легче для себя и просто сделать:

def validate
  reserved = %w(songs lyrics users posts)
  errors.add(:username, 'is not allowed') if reserved.include?(username)
end
2
ответ дан 7 December 2019 в 16:42
поделиться

Два противодействия:

1) Почему страница «Фаворитов» для каждого пользователя нужно жить в корне дерева URI?

2) Как вы в настоящее время иметь дело с ситуацией, когда два пользователей выбирают одно и то же имя пользователя?

0
ответ дан 7 December 2019 в 16:42
поделиться

Если вы хотите потянуть в плагин, чтобы сделать это полезное, является , удобным

с их сайта

FromisiD - это «бульдозер армии Swiss Army». Плагины для Ruby на рельсах. Это позволяет создавать симпатичные URL-адреса и работать с дружелюбными чуматами, как если бы они были числовыми идентификаторами для моделей ActiveRecord.

Более того, важно для вас у него есть поддержка, чтобы убедиться, что модифицированные URL-адреса не соответствуют вам контроллерам / путях

1
ответ дан 7 December 2019 в 16:42
поделиться

Может быть, вы могли бы использовать этот?

Но, похоже, что он поднимается при отсутствии совпадения, так что вам, возможно, придется написать обертку, чтобы спасти ложь в этих случаях.

Я также только что понял, что вам также придется проверять любое совпадение, чтобы убедиться, что это не тот пользовательский маршрут, который вы захотите, чтобы он совпадал...

0
ответ дан 7 December 2019 в 16:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: