티스토리 뷰
해당 글은 https://blog.naver.com/kbs4674/221041490582 로 부터 게시글이 이전되었습니다.
그동안 저희가 devise를 연계한 홈페이지 회원관련 DB를 사용할 때는, ID(메일주소)가 곧 닉네임이었습니다.
그런데 저는 이 방식에서 '닉네임'이라는 새로운 DB 테이블 공간을 생성을 하고, 게시글 작성 등 때 보여질 때, 메일주소 대신 닉네임이 보여지는 법, '오늘의 한마디'에 대한 글을 작성하는 법에 대해서 공유하고자 합니다.
참고
1. Gem : devise를 이미 사용하고 있다는 가정하에 이 글을 작성합니다! [ devise Gem 설치법 클릭 ]
2. Scaffold CRUD를 기준으로 설명합니다. [클릭]
- Users 테이블에 새로운 컬럼 추가
참고 해당 예시에서는 Devise에서 nickname(닉네임), description(오늘의 한마디) 컬럼에 대한 추가를 예시로 설명합니다.
1. Users 테이블에 새로운 에트리뷰트(컬럼)를 추가합니다.
# 닉네임
rails g migration add_nickname_to_user nickname:string
# 오늘의 한마디
rails g migration add_description_to_user description:text
2. app/views/devise/registrations 폴더에 있는 new.html.erb (회원가입 페이지)와 edit.html.erb (회원정보 수정 페이지)열람 후, 적절한 위치에 nickname과 description에 대한 Text field넣습니다.
...
<div>
<%= f.label "닉네임" %>
<%= f.text_field :nickname, :required => true %><br/>
</div>
<div>
<%= f.label "한 마디" %>
<%= f.text_field :description %><br/>
</div>
...
3. app/controllers 폴더에 있는 application_controller.rb 파일을 열람 후, 다음 내용을 추가해줍니다.
※ 회원정보 수정 시, 내용이 수정되게 하기 위함임, 이 작업을 안하면 Devise 정보 수정 때 수정된 내용이 적용이 안됨.
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
added_attrs = [:nickname, :description, :email, :password, :password_confirmation, :remember_me]
devise_parameter_sanitizer.permit :sign_up, keys: added_attrs
devise_parameter_sanitizer.permit :account_update, keys: added_attrs
end
end
4. 닉네임 작성에 있어 중복체크를 하고싶은 경우, user 모델파일에 가서 다음 내용을 추가해주세요.
## app/models/post.rb
validates_uniqueness_of :nickname
5. 여기서 잠시 DB에 대해 작업좀 합시다!
DB/스키마를 최신화 해주세요.
rake db:migrate
그리고 이어서 회원가입 하시고 회원정보 변경 가셔서 닉네임과 오늘의 한마디가 제대로 적용되었는지,
회원정보 수정에서 수정된 내용이 잘 적용되는지 체크해보세요!
6. 만약 View 파일에서 나의 nickname 및 description을 노출하고 싶다면 다음과 같이 입력해주면 됩니다.
<%= current_user.nickname %>
<%= current_user.description %>
- 자료 참고
1. 공부하는 다람쥐 [클릭]
2. 닉네임 중복검사 체크 관련 [클릭]
3. tring, text Form 외 check-box 등 입력Form 추가 방법 [클릭]
루비온 레일즈 Ruby on Rails ROR
'프로그래밍 공부 > Ruby on Rails : Gem' 카테고리의 다른 글
Ruby on Rails : 네이버 연동 로그인 API [Gem : omniauth-naver] (2) | 2019.11.04 |
---|---|
Ruby on Rails : devise를 활용한 이메일 인증 [Gem : devise] (0) | 2019.11.04 |
Ruby on Rails : Devise 문제 이슈 및 해결방안 (게시글을 쓰고 회원탈퇴를 한다면..?) (2) | 2019.11.04 |
Ruby on Rails : devise 한글번역 + 'Time-Ago 번역' [Gem : devise-i18n] (0) | 2019.11.03 |
Ruby on Rails : 로그인/회원가입 [Gem : devise] (0) | 2019.11.03 |