닉네임, 오늘의 한마디 기능 넣기

nickname(replace email), private message

그동안 저희가 devise를 연계한 홈페이지 회원관련 DB를 사용할 때는, ID(메일주소)가 곧 닉네임이었습니다.

그런데 저는 이 방식에서 '닉네임'이라는 새로운 DB 테이블 공간을 생성을 하고, 게시글 작성 등 때 보여질 때, 메일주소 대신 닉네임이 보여지는 법, '오늘의 한마디'에 대한 글을 작성하는 법에 대해서 공유하고자 합니다.

이번 방법은 Devise가 기본적으로 깔려있어야 합니다.


닉네임, 오늘의 한마디

  • /db/migrate 폴더에 있는 create_users.rb를 열람 후, 다음 내용을 추가합니다.
# 닉네임 (http://itchipmunk.tistory.com/87)
t.string :nickname,           null: false, default: ""
# 오늘의 한마디
t.text :description,           null: false, default: ""

참고로 저는 t.string :encrypted_password, null: false, default: "" 내용 밑에 위 내용을 추가했습니다.

  • /app/views/devise/registrations 폴더에 있는 new.html.erb(회원가입 페이지)와 edit.html.erb(회원정보 수정 페이지)열람 후,

    적절한 위치에 nickname과 description에 대한 Text field넣습니다.

...

<div class="field">
    <%= f.label "닉네임" %><br/>
    <%= f.text_field :nickname, class: "form-control", :required => true %><br/>
</div>

<div class="field">
    <%= f.label "한 마디" %><br/>
    <%= f.text_field :description, class: "form-control" %><br/>
</div>

...
  • /app/controllers 폴더에 있는 application_controller.rb 파일을 열람 후, 다음 내용을 추가해줍니다.

회원정보 수정 시, 내용이 수정되게 하기 위함임, 이 작업을 안하면 회원정보 수정 때 수정된 내용이적용이 안됨.

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?
  ...

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :description, :email, :password])
    devise_parameter_sanitizer.permit(:account_update, keys: [:nickname, :description, :email, :password, :current_password])
  end
end
  • 여기서 잠시 DB에 대해 작업좀 합시다! 다음 명령어를 순차적으로 입력해주세요~^^
#DB를 삭제(초기화)후, 최근 DB를 적용 합니다. (초기화 꼭 해야할겁니다.)
rake db:drop
rake db:migrate

그리고 이어서 회원가입 하시고 회원정보 변경 가셔서 닉네임과 오늘의 한마디가 제대로 적용되었는지,

회원정보 수정에서 수정된 내용이 잘 적용되는지 체크해보세요.

  • (여기서부터는 개인적인 취향에 따라 수정합니다.) 저같은 경우는 다음 3가지의 경우로 설명하겠습니다.

① 수정

app/views/layouts 위치에 있는 application.html.erb 파일을 열람 후, 적절한 위치에 다음 내용을 추가합니다.

<%= current_user.nickname %>

② 수정

이 부분은 게시글 '열람'에 해당되는 view로 이동하신 후(제 기준상에선 /app/views/posts 에 있는 show.html.erb) 다음 내용을 추가합니다.

'@변수'는 사람마다 다를겁니다. 자기 기준으로 하세요!

<%= @findpost.user.nickname %>

③ 수정

② 수정과 동일한 위치에서, 적절한 위치에 다음 내용들을 추가합니다!

<%= @findpost.user.nickname %></b> 님의 한마디 : <br/>
<%= @findpost.user.description %>

▲ 태그입력 허용된 '한마디'
혹시 '한마디' 적는 란에 태그 삽입을 통해 위 사진 예제처럼 이미지 태그(<img src="">) 등을 허용하고 싶다면..

다음 내용을 입력하세요..

<%= @findpost.user.description.html_safe %>

주의할 점은, 태그 허용으로 인해 홈페이지 보안 허점이 생길 수 있습니다.

  • 상대방 간의 닉네임 중복검사를 위한 작업을 하는 코딩내용을 /app/models 위치에 있는 user.rb에 입력합니다.
validates_uniqueness_of :nickname

만약 닉네임을 바꾸면 게시판에 기재된 닉네임도 따라서 바뀝니다.

참고

1) 공부하는 다람쥐 : http://itchipmunk.tistory.com/87

2) 닉네임 중복검사 체크 관련 : https://stackoverflow.com/questions/3692905/adding-additional-field-and-validation-to-devise-view-model-in-rails-app

results matching ""

    No results matching ""