Получить имя пользователя в URL
Ты можешь сделать это. Devise - это просто решение для аутентификации. Другие ваши контроллеры могут вести себя так, как вы хотите. Вот краткий обзор шагов, которые необходимо выполнить, чтобы получить это поведение URL.
- Убедитесь, что
user_name
уникален для каждого пользователя
- Переопределить пользовательский
to_param
метод для возврата user_name
- Изменить способ, которым вы получаете пользователя из базы данных
Это будет идти в вашей модели пользователя
class User < ActiveRecord::Base
devise :database_authenticatable, :confirmable, :validatable
validates_uniqueness_of :user_name
def to_param
user_name
end
end
Затем, в вашем контроллере, сделайте что-то вроде этого:
@user = User.find_by_user_name(params[:id])
Такие помощники, как user_path(@user)
, используют метод to_param
для генерации URL.
Удалить контроллер из URL
Что касается изменения маршрута с /user/:id
на /:id
. Примерно так будет работать:
match '/:id' => 'users#show', :as => :user
Здесь вы можете использовать user_path
и user_url
из-за :as => :user
Но вы можете извлечь пользу из чтения:
Как я могу реализовать тщеславные URL в приложении Rails?
Как реализовать "короткие" вложенные тщеславные URL в рельсах?
Есть много вещей, о которых стоит подумать, когда вы делаете это таким образом.