Devise에서 사용자 정보 편집
5854 단어 RubyonRails6.0루비devise
★User 신규 등록 마찬가지로 편집하려고하면 ...
Current password can't be blank 및 오류 메시지가. . .
※devise를 사용해, 유저 정보를 편집할 때에 디폴트의 아직
암호를 입력하라는 메시지가 나타납니다.
❶ Devise를 사용자 정의하기 위해 컨트롤러 작성
rails generate devise:controllers users
create app/controllers/users/confirmations_controller.rb
create app/controllers/users/passwords_controller.rb
create app/controllers/users/registrations_controller.rb
create app/controllers/users/sessions_controller.rb
create app/controllers/users/unlocks_controller.rb
create app/controllers/users/omniauth_callbacks_controller.rb
❷update_resource 메소드 재정의
#registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
protected
def update_resource(resource, params)
resource.update_without_password(params)
end
end
❸ 라우팅에 추가
devise_for :users, controllers: { registrations: 'users/registrations' }
❹ 비밀번호 입력 양식 삭제
#views/devise/registrations/edit.html.erbから削除
↓ 잊기 쉬운 부분
★사용자의 current_password를 알 수 없다고 합니다...
❺attr_accessor를 사용하여 설명
(User 모델에 지정된 값을 인스턴스 변수로 취급합니다)
※편집시에는 밸리데이션이 작동하지 않도록 기재
#省略
attr_accessor :current_password
with_options format: { with: /\A(?=.*?[a-z])(?=.*?\d)[a-z\d]{6,}+\z/i } do
validates :password, presence: true, on: :create
validates :password_confirmation, presence: true, on: :create
end
❻ApplicationController에 account_update 추가
#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
private
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [#省略])
devise_parameter_sanitizer.permit(:account_update, keys: [#省略])
end
end
★Devise 조금 이해 ...
★ 이번 교과서는 이쪽
Reference
이 문제에 관하여(Devise에서 사용자 정보 편집), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/coxcoa/items/fb74ee10f1a99b8ad622텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)