2017-06-01 1 views
1

私はこれを前に投稿したことがありますが、私にとってはうまくいく解決策を見いだせませんでした。Rails - omniauthユーザーのためのDevise '現在のパスワード'を無効にする方法

私が考案ウィキ次試してみましたが、コントローラに追加するために他の人によって提案されたコードを試してみました: Editing Users With Devise and Omniauth [Rails]update_without_password does't update user info https://github.com/plataformatec/devise/issues/1620

問題は、私たちのTwitter Omniauthを経由してユーザーがサインアップし、更新することができないということです彼らのアカウント情報はDeviseが彼らに「現在のパスワード」を入力して変更を促すためです。ユーザーにランダムに生成されたパスワードを電子メールで送信することは選択肢ではありません。

を、私はそれが最初にその詳細を編集するTwitterユーザーが認識されるように工夫コントローラの「更新」メソッドをオーバーライドしたいと彼らは「現在のパスワード」の検証をスキップすることができます - 私は何をしたいのか

。 twitterユーザーには、確認する変数となる標準の電子メールアドレスを割り当てます。彼らはそれを変更せずにfromを提出することはできません。それでも

問題 -

私は登録コントローラに異なるコードブロックを試してみたが、私はまだ現在のパスワードが間違っているというエラーが発生してからバックへのリダイレクト取得しています。私はbinding.pryに入ることさえしていないので、メソッドが読み込まれていないように見えますか?

「現在のパスワード」のフォーム入力を完全に削除して、デフォルト値で非表示にしてみました。

ありがとうございます!

ルート

Rails.application.routes.draw do 

    ActiveAdmin.routes(self) 
    # devise_for :users, 
    devise_for :users, controllers: { registrations: 'registrations' }, 
    controllers: { omniauth_callbacks: 'users/omniauth_callbacks' } 


    scope '(:locale)', locale: /en|ca|es/ do 

    resources :politicians 

    resources :posts do 
     resources :comments, only:[:new, :create, :edit, :update, :destroy] 
     member do 
     put "like", to: "posts#upvote" 
     put "dislike", to: "posts#downvote" 
     end 
    end 

    get "/about" => "pages#about_us" 
    root to: 'pages#home' 
    end 
    # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 
end 

Registrations_Controller.rb

class Users::RegistrationsController < Devise::RegistrationsController 

    protected 

    def update_resource(resource, params) 
    binding.pry 
     if current_user.email.include?("email.com") 
     params.delete("current_password") 
     resource.update_without_password(params) 
     else 
     resource.update_with_password(params) 
     end 
    end 
end 
+0

可能な複製(https://stackoverflow.com/questions/13436232/editing-users-with-devise-and-omniauth) – Gerry

答えて

0

あなたの登録のコントローラーで、この1と同様の方法を作成することをお勧めします:

def update_resource(resource, params) 
    resource.update_without_password(params) 
end 

Deviseは、ユーザーがパスワードhereを入力せずにアカウント情報を更新できるようにするための非常に素晴らしく、詳細なWiki記事を提供しています。 [考案とOmniauthを持つユーザーの編集]の

+1

こんにちはthisischuck、ご返信用 感謝。私はそこにステップをたどってきましたが、残念ながら私はフォームに "'あなたの現在のパスワードがあなたの変更を確認する必要があります' 'というエラーメッセージが表示されます。 わからないことを確認してください – dan101

+0

サーバーを再起動し、パスワード確認フィールドを探していないようにパラメータを設定してください。 – thisischuck

関連する問題