###前提・実現したいこと
Railsでアプリを作っていますが、以下の現象が発生しており、その解決策が分かりません。
・Deviseでパスワードが変更できない(ログを見ると、UPDATEが送られていない)
・その他のフィールドは変更できる(当然UPDATEが送られている)
・パスワードリセット画面からは変更できる
###該当のソースコード
/views/devise/registrations/edit.html.slim .col-sm-8.col-sm-offset-2 h2 | プロフィール編集 br = form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| = render 'shared/devisemes' .row .col-xs-6 .form-group = f.text_field :l_name, autofocus: true, :class => "form-control", :placeholder => "姓" .col-xs-6 .form-group = f.text_field :f_name, :class => "form-control", :placeholder => "名" .row .form-group = f.email_field :email, :class => "form-control", :placeholder => "メールアドレス" .row - if devise_mapping.confirmable? && resource.pending_reconfirmation? div | Currently waiting confirmation for: = resource.unconfirmed_email .form-group label | パスワード変更 = f.password_field :password, autocomplete: "off", :placeholder => "新しいパスワード(変更しない場合は空欄)", :class => 'form-control' .form-group = f.password_field :password_confirmation, autocomplete: "off", :placeholder => "パスワード再確認(変更しない場合は空欄)", :class => 'form-control' .actions = f.submit "更新", :class => 'btn btn-primary'
# /controllers/application_controller.rb class ApplicationController < ActionController::Base protect_from_forgery with: :exception before_action :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:f_name, :l_name]) devise_parameter_sanitizer.permit(:account_update, keys: [:password, :f_name, :l_name]) end end
# /controllers/registrations_controller.rb class RegistrationsController < Devise::RegistrationsController protected def update_resource(resource, params) resource.update_without_password(params) end end
パスワード変更を試みた際のログ(エラーは出ないがUPDATEも送られず)
Started PUT "/" for 10.240.1.41 at 2017-08-17 03:31:21 +0000 Processing by RegistrationsController#update as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"UC3W9cPOhJO/O9lsZlsKMH3nnZyDVDT3xMW3gdhakUgLBzYE0XMMZP6LClzUKvvxRnPfnqQUFcRL+1V+cSSm1w==", "user"=>{"l_name"=>"", "f_name"=>"", "nickname"=>"test01", "sex"=>"", "email"=>"test01@gmail.com", "phone_number"=>"", "description"=>"", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"更新"} User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 1], ["LIMIT", 1]] User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] (0.2ms) begin transaction User Exists (0.4ms) SELECT 1 AS one FROM "users" WHERE LOWER("users"."email") = LOWER(?) AND ("users"."id" != ?) LIMIT ? [["email", "test01@gmail.com"], ["id", 1], ["LIMIT", 1]] (0.2ms) commit transaction Redirected to http://myapp.c9users.io:8080/ Completed 302 Found in 41ms (ActiveRecord: 1.7ms) Started GET "/" for 10.240.0.240 at 2017-08-17 03:31:21 +0000 Processing by PagesController#home as HTML Rendering pages/home.html.slim within layouts/application Rendered layouts/_search_form.html.slim (7.4ms) Rendered layouts/_rails_default.html.slim (162.4ms) Rendered shared/_navbar_guest.html.slim (31.2ms) Rendered shared/_message.html.erb (1.3ms) Rendered shared/_footer.html.slim (6.6ms) Completed 200 OK in 284ms (Views: 277.1ms | ActiveRecord: 2.9ms)
###補足情報
本番環境
・さくらVPS
・ubuntu 16.04
・nginx 1.10.3-0
・unicorn 4.9.0-2build2
・ruby 2.4.1p111 (2017-03-22 revision58053) [x86_64-darwin16]
・Rails 5.0.3
開発環境
・cloud9
回答2件
あなたの回答
tips
プレビュー