12

デバイスモデルで omniauth を実装したので、他のサービスを使用して認証できます。ユーザーは twitter や facebook を使用して認証できるため、私のモデルではパスワードはもう必要ありません...

すべてが正常に機能していますが、ユーザーが登録を編集しようとすると、ユーザーが「current_password」を通知しなかったため、プロセスをスキップするように工夫してください (現在は存在しない場合があります)。

デバイスを上書きする登録コントローラーを作成しました。

class RegistrationsController < Devise::RegistrationsController
  def update
    super
  end
end

しかし、パスワードの検証をスキップする方法に関するドキュメントが見つかりません。どうすれば更新アクションでそれを行うことができますか?

4

5 に答える 5

35

上記と同様に、これをユーザー モデルに入れてみてください。

# bypasses Devise's requirement to re-enter current password to edit
def update_with_password(params={}) 
  if params[:password].blank? 
    params.delete(:password) 
    params.delete(:password_confirmation) if params[:password_confirmation].blank? 
  end 
  update_attributes(params) 
end
于 2011-02-21T20:25:10.640 に答える
10

以下は私のために働いた:

ユーザーコントローラーの更新アクションで、

params[:user].delete(:password) if params[:user][:password].blank?
params[:user].delete(:password_confirmation) if params[:user][:password_confirmation].blank?

before_saveおそらく、それをコールバックに適応させることができますか?

于 2010-11-26T01:31:27.833 に答える