-
[루비온레일즈] 유저-댓글 (연결, 댓글 작성 기능 수정하기)Ruby on Rails 2021. 3. 17. 15:57
이전 포스팅에서는 유저와 게시물을 연결해 게시물에 user_id를 넣어주고 유저와 게시물에 관련된 기능들을 수정했습니다.
(로그인 유무와 작성자 관련 게시물 CRUD 수정. 컨트롤러 및 뷰 수정 등)
이제 댓글이 남아 있습니다!
우선 유저-댓글 간 부모-자식 관계를 설정해주고 댓글 작성 기능을 수정해보겠습니다.
1. 유저-댓글 모델 연결하기
앞에서 유저와 게시물을 연결했던 것과 동일하게 두 모델의 관계를 설정합니다.
user.rb 와 comment.rb 파일에 각각 has_many :comments 와 belongs_to :user를 추가해줍니다.
다음은 comment 모델에 user_id 컬럼을 추가합니다.
2. comment 모델에 user_id 컬럼 추가
board 모델에 user_id 컬럼을 추가한 것과 마찬가지로 상단 Tools - Run Rails Generator 에서 rails g migration 창에서 AddUserToComment user_id:integer를 입력해 comment 모델에 user_id 라는 컬럼을 추가합니다.
이는 터미널에서 rails g migration add_user_to_comment user_id:integer 라는 명령어로도 수행이 가능합니다.
마이그레이션 파일이 잘 생성되었다면, rake db:migrate 해서 변경된 테이블 모양을 잡아줍니다.
rails c 로 콘솔 창을 열어서 Comment.new 를 입력하면, 맨 마지막에 user_id 자리가 추가된 것을 확인할 수 있습니다.
3. comment 컨트롤러 create 액션 수정하기
이제부터 새로 작성되는 댓글에는 user_id 정보가 들어가야 하기 때문에 comments_controller.rb 를 수정합니다. 이번 포스팅에서는 create 부터 해보겠습니다.
comment.user_id = current_user.id
를 입력해 현재 유저가 해당 댓글의 user_id 라고 알려줍니다.
서버를 실행하여 테스트해보면, 이런 식으로 댓글 작성이 잘 되는 것을 볼 수 있습니다.
그리고 추가적으로 댓글에 해당 유저 id 가 잘 들어갔는지 확인하기 위해서 콘솔 창을 열어 Comment.last 를 찍어보겠습니다.
보면 content, board_id, created_at, updated_at, 마지막에 user_id: 1 이라고 잘 들어와 있네요!
여기까지 일단 유저와 댓글 모델을 연결하고 create 액션을 수정해 댓글 작성 기능을 구현했습니다.
다음 포스팅에서는 계속해서 수정 및 삭제 기능을 구현하겠습니다.
'Ruby on Rails' 카테고리의 다른 글
[루비온레일즈] 유저-댓글 (댓글 edit 구현하기) (0) 2021.03.18 [루비온레일즈] 유저-댓글 (댓글 삭제 기능 구현하기) (0) 2021.03.17 [루비온레일즈] 유저-게시물 (비로그인 시 show 페이지 열리지 않는 에러 해결) (0) 2021.03.17 [루비온레일즈] 유저-게시물 (작성자만 게시글 수정, 삭제 가능하게 구현) (1) 2021.03.17 [루비온레일즈] 유저-게시물(로그인, 비로그인 검증해 게시글 작성하기) (0) 2021.03.17