#ruby-on-rails #session #controller #devise
#ruby-on-rails #сессия #контроллер #разработать
Вопрос:
В devise многие страницы, на которых рассказывается, как выполнять определенные действия, требуют редактирования контроллера сеансов. Я настроил devise, используя это https://github.com/fortuity/rails3-subdomain-devise/wiki/Tutorial -(Пошаговое руководство)Это не привело к созданию контроллера сеансов. Как мне его создать. (Если это действительно просто, извините, просто дайте мне несколько простых шагов)
Ответ №1:
Создайте свой контроллер сеансов с rails g controller MySessions
помощью . Затем внутри вашего контроллера измените его с наследования от ApplicationController
на Devise Controller следующим образом:
class MySessionsController < Devise::SessionsController
#your session logic here
end
Любую логику в этом контроллере, которую вы хотите переопределить, вы можете переопределить, вызвав этот метод и вставив свою собственную логику. Список того, что находится в этом контроллере, вы можете просмотреть на их странице Github. Если вы не хотите переопределять их методы, вы можете либо оставить их, либо просто вызвать super .
def new
super
end
Комментарии:
1. Спасибо за полезную обратную связь @janders. Кстати, есть ли причина, по которой это
MySessions
вместоSessions
as в исходном коде? Это опечатка, или не имеет значения, что это другое?2. Имя вашего контроллера не имеет значения, если оно наследуется от
Devise::SessionsController
.3. ах, только что понял, что он наследует от
Devise::SessionsController
, а не простоDeviseController
. Это имеет смысл, спасибо.4. На самом деле имя контроллера ИМЕЕТ значение. Внутри Devise есть множество мест, которые сравнивают текущее значение
controller_name
с"sessions"
. Кроме того, используемые им ключи i18n основаны на имени контроллера и т. Д. Вы должны вызвать свой подкласс простоSesssionsController