건설 보고서: 사용자를 생성하고 편집할 컨트롤러를 준비합니다.
10099 단어 rails
한 번에 한 단계씩 사용자 등록 컨트롤러를 편집하는 것부터 시작하겠습니다. 먼저 사용자 모델을 약간 수정했으며 등록에 필요한 기본값과 다른 데이터가 필요하다고 애플리케이션에 알려야 합니다. 따라서 컨트롤러 시작 부분에 등록 및 로그인 양식에 필요한 매개변수에 영향을 주는 두 개의 매직 라인을 추가합니다.
class Users::RegistrationsController < Devise::RegistrationsController
before_action :configure_sign_up_params, only: [:create]
before_action :configure_account_update_params, only: [:update]
이 시점에서 컨트롤러에 업데이트 및 생성 메서드에 대한 기본 고안 작업을 재정의하고 싶다고 말했습니다. 따라서 두 가지 기능을 추가해야 합니다.
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:email, :name, :surname, :password, :password_confirmation, :role])
end
def configure_account_update_params
case current_user.role
when 'trainee'
trainee_attributes = [:weight, :height, :date_of_birth]
keys = [:email, :name, :surname, :role, trainee_attributes: trainee_attributes]
when 'trainer'
keys = [:email, :name, :surname, :role, trainer_attributes: [:description]]
end
devise_parameter_sanitizer.permit(:account_update, keys: keys)
end
둘 다 양식에서 편집하려는 필드를 정의하지만 업데이트 기능이 훨씬 더 강력하다는 것을 즉시 알 수 있습니다. 왜요?
새 사용자를 만들려면 역할에 관계없이 동일한 데이터가 필요하지만 편집은 약간 다르게 보입니다. 연수생은 체중이나 키를 변경할 수 있습니다. 이것은 트레이너에게 중요하고 트레이너는 설명을 변경할 수 있습니다. 이것은 연수생에게 중요합니다. 따라서 사용자의 역할에 따라 편집 양식에서 다른 값을 요구해야 합니다.
첫 번째 구독자가 진행 중입니다. 그들은 아직 그들이 무엇을 하고 있는지 모릅니다.
우리는 여전히 이 두 가지 작업에 사용할 레이아웃을 구별해야 합니다. 로그인을 위해 다른 레이아웃이 필요하고 사용자가 이미 애플리케이션에 로그인한 데이터를 편집하기 위해 다른 레이아웃이 필요합니다. 따라서 컨트롤러 시작 부분에 추가합니다. 위의 두 줄 뒤에 before_action을 추가합니다.
layout :resolve_layout
그리고 앞서 작성한 두 가지 방법 뒤에 하나를 더 추가합니다.
def resolve_layout
case action_name
when 'edit'
'dashboard'
else
'application'
end
end
이러한 기능은 나중에 개발하겠지만 지금은 이 상태에 만족합니다.
폴란드에서는 '잘했어'라고 말하지 않습니다. 우리는 'gra gitara'라고 말하고 그것이 아름답다고 생각합니다. 우리가 준비한 컨트롤러는 전체적으로 대략 다음과 같아야 합니다.
class Users::RegistrationsController < Devise::RegistrationsController
before_action :configure_sign_up_params, only: [:create]
before_action :configure_account_update_params, only: [:update]
layout :resolve_layout
def create
super do
case current_user.role
when 'trainee'
trainee = Trainee.new(user_id: current_user.id)
trainee.save
when 'trainer'
trainer = Trainer.new(user_id: current_user.id)
trainer.save
end
end
end
protected
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:email, :name, :surname, :password, :password_confirmation, :role])
end
def configure_account_update_params
case current_user.role
when 'trainee'
trainee_attributes = [:weight, :height, :date_of_birth]
keys = [:email, :name, :surname, :role, trainee_attributes: trainee_attributes]
when 'trainer'
keys = [:email, :name, :surname, :role, trainer_attributes: [:description]]
end
devise_parameter_sanitizer.permit(:account_update, keys: keys)
end
def resolve_layout
case action_name
when 'edit'
'dashboard'
else
'application'
end
end
end
다음 게시물에서는 사용자 생성 및 편집, tailwindcss 설치라는 두 가지 방법에 대한 보기를 만들 것입니다.
표지 사진: 늦었어, 루나 자고 있어
Reference
이 문제에 관하여(건설 보고서: 사용자를 생성하고 편집할 컨트롤러를 준비합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kubacky/construction-report-we-prepare-the-controller-to-create-and-edit-the-user-22k9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)