设计注册功能

时间:2011-10-25 13:53:06

标签: ruby-on-rails ruby controller devise gem

如何在注册,登录等后设计设计执行功能。我尝试将这样的功能放在我的应用程序控制器中。

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 个答案:

答案 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,类似的方法只是为了返回路径。我不认为依靠这些方法进行副作用是个好主意。