2013-01-07 58 views
0

我對色器件設置自定義的註冊控制器,它是這樣的:如何同時使用Omniauth_callbacks控制器和定製設計註冊控制器

devise_for :users, controllers: {registrations: "registrations"} 

,並在控制器:

class RegistrationsController < Devise::RegistrationsController 

    protected 

    def after_update_path_for(resource) 
     user_path(resource) 
    end 
end 

它的工作原理大。

不過我也有omniauth認證,這又偉大工程...本身:

devise_for :users, controllers: {omniauth_callbacks: "omniauth_callbacks"} 
class OmniauthCallbacksController < Devise::OmniauthCallbacksController 

    def all 
    user = User.from_omniauth(request.env["omniauth.auth"]) 
     if user.persisted? 
     flash.notice = "Signed in!" 
     sign_in_and_redirect user 
     else 
     session["devise.user_attributes"] = user.attributes 
     redirect_to sign_up_path 
     end 
    end 
    alias_method :linkedin, :all 
    alias_method :twitter, :all 

end 

但是你可能也已經看到了我的問題 - 我不知道如何讓他們一起工作,因爲它們都以'devise_for:users'開始,所以無論我將它們放在路徑文件中,都無法工作。

如何讓它們同時工作,以便註冊控制器僅覆蓋'編輯'和'更新'操作,而omniauth_callbacks控制器則處理認證?

感謝

回答

2

在routes.rb中,你可以把逗號分隔的路徑,devise_for這樣的 -

devise_for :users, controllers: {registrations: "registrations", omniauth_callbacks: "omniauth_callbacks"} 

這將工作。

+0

輝煌,謝謝Saurabh,完美的作品! – jfdimark