Rails Devise에서 DB 열 독립적 인 항목 추가
하고 싶은 일
사용자 등록시 이용 약관에 동의하는 것을 실현하고 싶지만, 일부러 그것용의 컬럼을 만들 정도는 아니다.
이 메서드는 양식이 제출될 때 사용자 인터페이스의 확인란이 선택되어 있는지 확인합니다. 사용자에게 서비스 이용 조항에 대한 동의, 어떤 문서를 보는 등을 의무화하는데 사용하는 것이 전형적인 이용법입니다. Rails Guide > aceptance
이 도우미 사용
확인 환경
Model 업데이트
모델에 체크했는지의 플래그를 갖게한다.
등록시에만 밸리데이션 하고 싶기 때문에 on: :create
로 스코프를 짜낸다.
app/models/user.rbclass User < ApplicationRecord
validates :registration_check, acceptance: true, on: :create
end
attr_accessor
등으로 액세서를 사용하는 샘플도 있지만,이 validates
를 기술하는 것만으로 좋다.
'acceptance'는 데이터베이스에 저장할 필요가 없습니다. 저장을 위한 필드를 작성하지 않으면 헬퍼는 단순히 가상 속성을 작성합니다. Rails Guide > aceptance
당연하지만이 설명을하지 않으면 View에서 오류가 발생합니다.
약간 빠졌지만, 다음 항의 Strong Parameter 의 설정을 하지 않으면, 이 밸리데이션은 정상적으로 동작하지 않고, 체크를 넣지 않아도 등록이 생겨 버리므로 주의.
Strong Parameter / Controller 업데이트
Devise Controller를 Override로 커스터마이징합니다.
그 밖에도 Application Controller에서 before_action 등으로 수행하는 방법도 있는 것 같지만, ApplicationController에는 쓰고 싶지 않았기 때문에 채용하지 않았다.
컨트롤러의 병아리를 생성하고 해당 위치를 주석 처리하여 활성화합니다.
$ bundle exec rails g devise:controllers users
app/controllers/users/registrations_controller.rbclass Users::RegistrationsController < Devise::RegistrationsController
before_action :configure_sign_up_params, only: [:create]
•••
protected
# If you have extra params to permit, append them to the sanitizer.
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:registration_check])
end
end
View 업데이트
뷰의 병아리를 생성하고 registration_check
를 추가했습니다.
$ rails g devise:views users
app/views/devise/registrations/new.html.slim.field
= f.check_box :registration_check
= f.label :registration_check
참고
class User < ApplicationRecord
validates :registration_check, acceptance: true, on: :create
end
Devise Controller를 Override로 커스터마이징합니다.
그 밖에도 Application Controller에서 before_action 등으로 수행하는 방법도 있는 것 같지만, ApplicationController에는 쓰고 싶지 않았기 때문에 채용하지 않았다.
컨트롤러의 병아리를 생성하고 해당 위치를 주석 처리하여 활성화합니다.
$ bundle exec rails g devise:controllers users
app/controllers/users/registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController
before_action :configure_sign_up_params, only: [:create]
•••
protected
# If you have extra params to permit, append them to the sanitizer.
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:registration_check])
end
end
View 업데이트
뷰의 병아리를 생성하고 registration_check
를 추가했습니다.
$ rails g devise:views users
app/views/devise/registrations/new.html.slim.field
= f.check_box :registration_check
= f.label :registration_check
참고
$ rails g devise:views users
.field
= f.check_box :registration_check
= f.label :registration_check
Reference
이 문제에 관하여(Rails Devise에서 DB 열 독립적 인 항목 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tanakaworld/items/2efe9a4213859dc9c239텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)