# 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)`가 있다. 이 파일은 `new`와 `edit` 두개에서 공통으로 사용된다. 하지만 이 둘의 행동은 달라야 하는데 어떻게 구분하는걸까?
      * 인자로 들어온 `model` 를 보고 구분한다. 만약 `new`에서 렌더링된거라면 `user`는 비어있다. 따라서 `form_with`는 RESTful하게 알아서 `create` 메서드를 호출하게 만들고, 비어있지 않다면 자연스럽게 \`edit으로 액션을 정한다.
    *

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

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

### 8. 다음 학습 계획

* 게시물 작성
  * 로그인 유무에 따라 동작을 다르게
* 유저 생성 보강하기
  * 비밀번호는 두 번 입력하게 만들기
  * 비밀번호 보안 처리 하기
* 리뷰 기능 구현하기
  * 리뷰는 유저와 게시물에 belongs\_to 되게 만들자.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://simian114.gitbook.io/blog/undefined-1/diary/2020/12/20201230.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
