如何在注册,登录等后设计设计执行功能。我尝试将这样的功能放在我的应用程序控制器中。
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)
答案 0 :(得分:7)
您可以创建自己的sessions_controller
继承自Devise::SessionsController
并覆盖您要自定义的操作。例如,要在用户登录后执行某些操作,您可以执行以下操作:
class SessionsController < Devise::SessionsController
def create
super
perform_custom_stuff
end
end
如果调用super
不足,您可以在控制器中重现Devise::SessionsController#create
的当前实现。然后,您可以完全控制正在发生的事情,并可以自定义以定制您的确切需求。这可能不是最漂亮的解决方案,但可能是必要的(至少让你继续前进)。
答案 1 :(得分:0)
我只是想提一下after_sign_up_path_for
,类似的方法只是为了返回路径。我不认为依靠这些方法进行副作用是个好主意。