Rails разрабатывает контроллер сеансов

#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