20201231(목)

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

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 을 선언하고 이 라우팅에 대한 컨트롤러와 액션으로 usershow를 연결시켜줬다.

    • 결과 로그인한 상태에서 /profile에 접근하면 유저는 자신의 프로필을 localhost:3000/profile과 같이 아름다운 모습으로 확인할 수 있다.

  • 액티브레코드를 콘솔에서 사용하는 법

    • 오늘 post를 생성하는데 계속 문제가 생겨서(user_id를 넣지 않아서 생긴 문제였음) 이 문제를 해결하려고 콘솔에서 접근해서 시도를 해보려고 했는데 뭔가 이상했음

    • 원인은 액티브 레코드를 사용해서 접근하려고 했는데, 나는 db로 접근했던것

    • rails dbconsole로 액티브 레코드를 다루려고 했던것이다.

    • 따라서 조금 알아봤고 터미널에서 액티브 레코드에 접근하기 위해서는 rails console을 사용해야함을 알았따.

    • 그리고 이 상태에서의 명령어는 ROR에서 하는것과 똑같이 new, save, update ... 등을 이용하면 된다.

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

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

8. 다음 학습 계획

  • 유저 생성시 보안처리하기

  • 리뷰 관련 설계 다시하고 작성하기

Last updated