---
description: 2020년의 마지막... 많은 시간 공부하고 집중하지도 않았지만... 책상에 앉아있는 내가 자랑스럽다.
---

# 20201231(목)

## 2020-12-31

### 1. 학습 날짜

* 2020-12-31

### 2. 학습 시간

* 11:00 \~ 15:00, 21:00 \~ 22:00

### 3. 학습 범위 및 주제

* 루비온레일즈 간단한 사이트 만들어보기

### 4. 학습 목표

* 로그인한 유저만 게시물 작성할 수 있게 수정하기
* 로그인하면 유저는 자신의 프로필을 볼 수 있게 하기. RESTful을 헤치지 않는 방법으로

### 5. 과제 제출

* x

### 6. 상세 학습 내용

* 로그인한 유저만 게시물 작성할 수 있게 만들기
  * 게시글을 작성하는데 이상하게 계속 예외가 던져진다.
  * 예외의 이름은 `User must exist` 이었다. 스키마 파일을 보고 문제점을 발견했다.
  * 문제는 게시물의 속성으로 `user_id`를 FK로 만들었기 때문이다. 그리고 이 user\_id는 nullable 하지 않으므로 게시물을 작성하기 위해서는 user\_id 값이 항상 채워져야 한다.
  * user\_id 를 채우는데 2가지 문제가 있었다. 하나는 user\_id를 어떻게 가져오냐이고 두 번째는 user\_id를 어떻게 전송하냐
  * 먼저 `user_id`를 가져오는 방법은 현재 `session`을 가져오면 되는 아주 간단한 문제였다. 따라서 `session`을 이용해서 현재 세션의 `user_id`를 가져왔다.
  * `user_id`를 어떻게 `form` 형태로 전송하냐 였는데, 이 또한 간단하게 `hidden_field`를 이용해서 해결했다.
* 로그인 한 상태에서 자신의 profile 보기
  * 기존에 user의 프로필을 보기 위해서는 `/users/1` 처럼 `id`값을 줘서 들어가야만 했다.
  * 만약 로그인한 상태에서 자신의 profile을 보는데도 저런 식으로 `URI`를 입력해서 들어간다? 이건 아름답지 못하다.
  * 보다 아름다운 방법은 뭘까? 내가 생각한 방법은
    * 만약 로그인한 상태라면 `/profile` 에 접속하면 바로 자신의 상태를 볼 수 있는것. 그거야 말로 아름다운 방법이라고 생각한다.
    * 따라서 이런 방법을 정의해줘야 하는데, 어떻게 하면 좋을까?
    * 라우팅을 손보자.
    * `resource profile` 을  선언하고 이 라우팅에 대한 컨트롤러와 액션으로 `user`와 `show`를 연결시켜줬다.
  * 결과 로그인한 상태에서 `/profile`에 접근하면 유저는 자신의 프로필을 `localhost:3000/profile`과 같이 아름다운 모습으로 확인할 수 있다.
* 액티브레코드를 콘솔에서 사용하는 법
  * 오늘 post를 생성하는데 계속 문제가 생겨서(user\_id를 넣지 않아서 생긴 문제였음) 이 문제를 해결하려고 콘솔에서 접근해서 시도를 해보려고 했는데 뭔가 이상했음
  * 원인은 `액티브 레코드`를 사용해서 접근하려고 했는데, 나는 db로 접근했던것
  * `rails dbconsole`로 액티브 레코드를 다루려고 했던것이다.
  * 따라서 조금 알아봤고 터미널에서 액티브 레코드에 접근하기 위해서는 `rails console`을 사용해야함을 알았따.
  * 그리고 이 상태에서의 명령어는 ROR에서 하는것과 똑같이 `new, save, update ...` 등을 이용하면 된다.

### 7. 오늘 학습 내용에 대한 개인적인 총평

* 2020년의 마지막날이었다.... 정말 많은 일이 있었다. 이제와서 생각해보면 정말로 많은 기회가 있었다. 그리고 난 그 수많은 기회를 다 날린것만 같다.... 더 열심히 할 수 있었는데 열심히 하지 않았다. 뭔가 죄인이 된 느낌이다. 2021년부터는 더욱 정진해야겠다.

### 8. 다음 학습 계획

* 유저 생성시 보안처리하기
* 리뷰 관련 설계 다시하고 작성하기
