私はこれを前に投稿したことがありますが、私にとってはうまくいく解決策を見いだせませんでした。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
可能な複製(https://stackoverflow.com/questions/13436232/editing-users-with-devise-and-omniauth) – Gerry