Разработать функцию регистрации - PullRequest
2 голосов
/ 25 октября 2011

Как мне заставить devise выполнить функции после регистрации, входа в систему и т. Д. Я пытался поместить подобные функции в свой контроллер приложений.

class ApplicationController < ActionController::Base
  private
  def after_sign_up_path_for(resource_or_scope)
    execute stuff
  end
end

С моими такими маршрутами

devise_for :users do
     get "/users/sign_out" => "devise/sessions#destroy", :as => :destroy_user_session
end

Кажется, это ничего не делает. Я также попытался сделать контроллер сессий таким образом

class SessionsController < Devise::SessionsController
    functions
end

С моими такими маршрутами

devise_for :users, :controllers => {:sessions => 'devise/sessions'} do
    get "/users/sign_out" => "devise/sessions#destroy", :as => :destroy_user_session
end

Кажется, это тоже ничего не делает, есть что-то, чего мне не хватает в создании адаптивного устройства. (Я изначально настроил устройство, используя этот учебник) https://github.com/fortuity/rails3-subdomain-devise/wiki/Tutorial-(Walkthrough)

Ответы [ 2 ]

7 голосов
/ 25 октября 2011

Вы можете создать свой собственный sessions_controller, который наследуется от Devise::SessionsController, и переопределить действия, которые вы хотите настроить. Например, чтобы выполнить какое-либо действие после входа пользователя в систему, вы можете сделать:

class SessionsController < Devise::SessionsController
  def create
    super
    perform_custom_stuff
  end
end

Если вызова super недостаточно, вы можете воспроизвести текущую реализацию Devise::SessionsController#create в вашем контроллере. Тогда у вас есть полный контроль над тем, что происходит, и вы можете настроить его в соответствии с вашими потребностями. Возможно, это не самое красивое решение, но может быть необходимо (по крайней мере, чтобы вы продолжали работать).

0 голосов
/ 16 октября 2012

Я просто хотел упомянуть, что after_sign_up_path_for и подобные методы предназначены только для возврата пути.Я не думаю, что это хорошая идея полагаться на такие методы побочных эффектов.

...