Задать вопрос
Mirkom63
@Mirkom63
Я программист

Как в devise создать нового пользователя будучи уже авторизованным?

В сайте есть страница для администрирования пользователей. Там есть раздел для регистрации новых пользователей.
Получается, что когда я авторизован и пытаюсь создать нового, то devise ругается, что я уже авторизован и нового пользователя он создавать не будет чисто из принципа. Как обойти этот каприз?

В гугле вопрос такой встает, но ответа что-то я найти не могу.....
  • Вопрос задан
  • 85 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 1
RileyUsagi
@RileyUsagi
Developer
У девайса есть одна очень проблематичная особенность.
Будучи авторизованным у вас не получится создать новый объект модели User из-за всяких встроенных в девайс ограничений по безопасности.

В детали вдаваться не буду, но это именно та причина, по которой я (да и многие до и после меня) в своё время отказался от девайса в пользу самописной авторизации (рано или поздно все к этому приходят).

Конечно вы можете потратить не один день/неделю/месяц на то, чтобы разобраться во внутренностях этого монстра, но, уверяю вас, проще забить болт на этот велосипед из костылей и... написать свой =)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
viktorvsk
@viktorvsk
По описанию непонятна ваша проблема.

Вам нужна отдельная страница (адрес, контроллер), который будет обрабатывать создание юзеров, которое вы реализуете сами, без девайза.

Просто проведите аналогию - стандартная страничка девайза регистрирует случайных пользователей. У них не должно быть прав создавать пользователя. Если вы хотите создавать нового пользователя от лица пользователя, то вы, скорее, кто-то вроде Админа. И для него должен быть немного другой интерфейс.

Вкратце, вам нужно выполнить что-то вроде
User.create(password: 12345678, name: "Name")
Можете попробовать выполнить ее в консоли, добиться, что б она работала, как вам нужно. А после - уже смотреть, что именно происходит в вашем контроллере
Ответ написан
@pasystem
Веб разработчик
Хоть поздно ответил, но все же.
В роутах поменяйте путь для devise, например:
devise_for :users, path: '/auth', :path_names => {:sign_in => 'login', :sign_out => 'logout'}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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