Скрыть идентификатор пользователя в строке URL - PullRequest
7 голосов
/ 08 марта 2012

В моем приложении rails в настоящее время загружено множество пользователей, каждый из которых имеет зарегистрированный идентификатор пользователя.

Если я зайду в свой индекс пользователей и нажму на страницу показа пользователей, я получу заголовок следующего примера.

localhost: 3000 / users / 3

Теперь мне это не нравится, так как оно легко позволяет людям пропускать пользователей в шапке.

Как мне поступитьсделав следующее, чтобы вместо него отображалось поле user.username, например,

localhost: 3000 / users / adamwest

1 Ответ

9 голосов
/ 08 марта 2012

Вы можете определить метод to_param в модели пользователя.

class User
  ...
  def to_param
    name
  end
  ...
end

Тогда каждый сгенерированный URL будет иметь name вместо id в качестве идентификатора пользователя.

sid = User.new :name => 'sid'
user_path(sid) #=> "/users/sid"

Конечно, в контроллере вы должны найти пользователя по имени.

class UsersController
  ...
  def show
    @user = User.find_by_name(params[:id])
  end
  ...
end

Я также предлагаю вам взглянуть на friendly_id gem.

FriendlyId - это «бульдозер Швейцарской армии», включающий в себя плагины для вставки и постоянные ссылки для ActiveRecord.Он позволяет создавать красивые URL-адреса и работать с удобными для человека строками, как если бы они были числовыми идентификаторами для моделей ActiveRecord.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...