2016-12-16 8 views
0

twissとgithubの2つのomniauthプロバイダで動作するようにdeviseを設定しています。最初にgithubを組み込み、私はOmniauthCallbacksControllerにgithubメソッドを作成しました。後でtwitterも使いたいと思ったので、コントローラーを再構成し、githubメソッドを破棄して、両方のプロバイダーのより洗練された実装にしました。コントローラの編集時にルートが変更されない

問題は、rake routesを実行すると、古いgithubメソッドがすべて表示され、コントローラの変更が認識されていないように見えます。私はコントローラからすべてを削除することもでき、私のrake routes結果は変更されません。私は以下の関連ファイルを添付しました。あなたが私に与えることができるどんな洞察にも、事前に多くの感謝をします。

マイルート・ファイルは、(今は存在しないusers/omniauth_callbacks#github方法の存在に注意してください)以下である:

Rails.application.routes.draw do 

    resources :issues 
    resources :submissions 
    resources :home 

    devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } 
    match '/users/:id/finish_signup' => 'users#finish_signup', via: [:get, :patch], :as => :finish_signup 

    root to: "home#index" 
end 

私はrake:routesを実行すると、私は以下の取得:

$ rake routes 
         Prefix Verb  URI Pattern       Controller#Action 
         issues GET  /issues(.:format)      issues#index 
           POST  /issues(.:format)      issues#create 
        new_issue GET  /issues/new(.:format)     issues#new 
        edit_issue GET  /issues/:id/edit(.:format)   issues#edit 
         issue GET  /issues/:id(.:format)     issues#show 
           PATCH  /issues/:id(.:format)     issues#update 
           PUT  /issues/:id(.:format)     issues#update 
           DELETE /issues/:id(.:format)     issues#destroy 
        submissions GET  /submissions(.:format)    submissions#index 
           POST  /submissions(.:format)    submissions#create 
       new_submission GET  /submissions/new(.:format)   submissions#new 
       edit_submission GET  /submissions/:id/edit(.:format)  submissions#edit 
        submission GET  /submissions/:id(.:format)   submissions#show 
           PATCH  /submissions/:id(.:format)   submissions#update 
           PUT  /submissions/:id(.:format)   submissions#update 
           DELETE /submissions/:id(.:format)   submissions#destroy 
        home_index GET  /home(.:format)      home#index 
           POST  /home(.:format)      home#create 
         new_home GET  /home/new(.:format)     home#new 
        edit_home GET  /home/:id/edit(.:format)    home#edit 
          home GET  /home/:id(.:format)     home#show 
           PATCH  /home/:id(.:format)     home#update 
           PUT  /home/:id(.:format)     home#update 
           DELETE /home/:id(.:format)     home#destroy 
user_github_omniauth_authorize GET|POST /users/auth/github(.:format)   users/omniauth_callbacks#passthru 
user_github_omniauth_callback GET|POST /users/auth/github/callback(.:format) users/omniauth_callbacks#github 
       new_user_session GET  /users/sign_in(.:format)    devise/sessions#new 
        user_session POST  /users/sign_in(.:format)    devise/sessions#create 
      destroy_user_session DELETE /users/sign_out(.:format)    devise/sessions#destroy 
       user_password POST  /users/password(.:format)    devise/passwords#create 
      new_user_password GET  /users/password/new(.:format)   devise/passwords#new 
      edit_user_password GET  /users/password/edit(.:format)  devise/passwords#edit 
           PATCH  /users/password(.:format)    devise/passwords#update 
           PUT  /users/password(.:format)    devise/passwords#update 
     cancel_user_registration GET  /users/cancel(.:format)    devise/registrations#cancel 
      user_registration POST  /users(.:format)      devise/registrations#create 
     new_user_registration GET  /users/sign_up(.:format)    devise/registrations#new 
     edit_user_registration GET  /users/edit(.:format)     devise/registrations#edit 
           PATCH  /users(.:format)      devise/registrations#update 
           PUT  /users(.:format)      devise/registrations#update 
           DELETE /users(.:format)      devise/registrations#destroy 
       finish_signup GET|PATCH /users/:id/finish_signup(.:format) users#finish_signup 
          root GET  /         home#index 

そして、私の新しいのOAuthコールバックコントローラは次のようになります:

class OmniauthCallbacksController < Devise::OmniauthCallbacksController 
    def self.provides_callback_for(provider) 
    class_eval %Q{ 
     def #{provider} 
     @user = User.find_for_oauth(env["omniauth.auth"], current_user) 

     if @user.persisted? 
      sign_in_and_redirect @user, event: :authentication 
      set_flash_message(:notice, :success, kind: "#{provider}".capitalize) if is_navigational_format? 
     else 
      session["devise.#{provider}_data"] = env["omniauth.auth"] 
      redirect_to new_user_registration_url 
     end 
     end 
    } 
    end 

    [:twitter, :github].each do |provider| 
    provides_callback_for provider 
    end 

    def after_sign_in_path_for(resource) 
    if resource.email_verified? 
     super resource 
    else 
     finish_signup_path(resource) 
    end 
    end 
end 

答えて

0

問題は、私が投稿したファイルではないことが判明しました。 Userモデルでは、私は次の行を持っていました:omniauth_providers: [:github]私はそれにツイッターを追加する必要がありました。

関連する問題