20201230(수)

스캐폴딩을 사용하지 않으면 기본적인 모델, 컨트롤러도 생성하지 못하는 남상혁....

2020-12-30

1. 학습 날짜

  • 2020-12-30

2. 학습 시간

  • 09:30 ~ 22:00

3. 학습 범위 및 주제

  • 루비온레일즈 라우팅, 간단한 사이트 만들어보기

4. 학습 목표

  • 페펙트 루비 온 레일즈 7장

  • 간단한 사이트 만들어보자

5. 과제 제출

  • x

6. 상세 학습 내용

  • 어제 학습했던 라우팅 복습

  • 간단한 사이트 만들어보기

    • 목표: 게시물을 작성하는 사이트. 기본적으로 게시글을 쓰기 위해서는 로그인을 해야함. 단순히 글을 읽기 위해서는 로그인을 할 필요는 없음

    • 로그인, 로그아웃 버튼을 기본 레이아웃으로 적용한다. 만약 로그인이 되어있다면 로그아웃 버튼이 나오고 반대로 로그인이 되어있지 않다면 로그인 버튼이 나온다.

    • 오늘은 로그인 기능까지만 구현했다.

    • 시행착오

      • 이전까지 계속 scaffolding 기능으로 모델, 컨트롤러를 한번에 만드는 버릇이 들어서인지 생각보다 모델과 컨트롤러를 만드는게 쉽지는 않았다. 따라서 간단한 rails 명령어를 다시 학습해야만 했다.

      • 프로젝트 경로 이름에 한글이 들어가면 안된다. 이 문제 때문에 몇 시간을 날렸다 하하

      • erb 파일에서 password 필드는 배열의 행태로 들어온다. params[:password] 는 통상적으로 string으로 생각하기 쉽지만 array의 형태다!

      • 컨트롤러에서 render plain: 등을 사용하면 html 파일을 렌더링하지 않기 때문에 기본 layout 이 적용되지 않는다.

      • scaffold로 모델, 컨트롤러, 뷰를 만들면 _from_... 파일에 form_with (model: user)가 있다. 이 파일은 newedit 두개에서 공통으로 사용된다. 하지만 이 둘의 행동은 달라야 하는데 어떻게 구분하는걸까?

        • 인자로 들어온 model 를 보고 구분한다. 만약 new에서 렌더링된거라면 user는 비어있다. 따라서 form_with는 RESTful하게 알아서 create 메서드를 호출하게 만들고, 비어있지 않다면 자연스럽게 `edit으로 액션을 정한다.

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

  • 흠.. 오늘은 나쁘지 않게 학습한 것 같다. 내일은 더 열심히 해봐야겠다.

8. 다음 학습 계획

  • 게시물 작성

    • 로그인 유무에 따라 동작을 다르게

  • 유저 생성 보강하기

    • 비밀번호는 두 번 입력하게 만들기

    • 비밀번호 보안 처리 하기

  • 리뷰 기능 구현하기

    • 리뷰는 유저와 게시물에 belongs_to 되게 만들자.

Last updated