Как создать контроллеры и представления для отображения профиля пользователя с Devise Gem в качестве механизма аутентификации? - PullRequest
3 голосов
/ 07 ноября 2010

Я использую Devise в качестве механизма аутентификации для моего приложения.
Я хочу добавить дополнительную информацию в мою модель пользователя, такую ​​как статистика пользователя, изображение профиля и другую соответствующую информацию о пользователе. Как этого добиться?.
Даже после создания "rails g devise: views" он создает только те представления, которые я могу настроить, но не дает мне возможности редактировать его контроллеры.

Иначе, можно ли отредактировать само устройство для разработки в соответствии с моими требованиями?
Я никогда не пытался настроить GEM.Любые ссылки, чтобы начать с настройки существующего драгоценного камня?

1 Ответ

4 голосов
/ 07 ноября 2010

Devise сам по себе является движком Rails, и вы можете переопределить любую его функциональность, создав копию файла, который вы хотите изменить, в своем локальном каталоге.Когда Rails начинает искать соответствующий контроллер для запроса, он сначала проверяет локальное приложение, затем vendor / gems и затем сами загруженные гемы.

В случае Devise они упоминают, что модифицируют контроллерыдолжно быть сделано следующим образом:

Настройка контроллеров

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

1) Создайте свой собственный контроллер, например, Admins :: SessionsController:

class Admins::SessionsController < Devise::SessionsController
end 

2) Скажите маршрутизатору использовать этот контроллер:

devise_for :admins, :controllers => { :sessions => "admins/sessions" } 

3) И поскольку мы изменили контроллер, он не будет использовать представления «devise / session», поэтому не забудьте скопировать «devise / session» в «admin / session».

Помните, что Devise использует флэш-сообщениячтобы пользователи знали, был ли вход успешным или неудачным.Devise ожидает, что ваше приложение будет вызывать «flash [: alert]» и «flash [: alert]» в зависимости от ситуации.

Вот источник цитаты: https://github.com/plataformatec/devise

...