20210120(수)
2021-01-20
1. 학습 날짜
2020-01-20
2. 학습 시간
13:00 ~ 24:00
3. 학습 범위 및 주제
닌자 프로젝트
사이드바 구현
4. 학습 목표
사이드바를 구현하면서 여러가지 문제를 해결해보자.
5. 학습 정리
x
6. 상세 학습 내용
닌자 프로젝트
프라미스 사용시 this 활용 문제(여러 경우에 사용될 수 있다.)
위의 코드에서
let obj = this
라는 문구가 있다. 이 문구를 사용한 이유는fetchContainer
에서의this
의 컨텍스트가 변하기 때문에 현재 컨텍스트에 존재하는user_list
라는 변수를 사용할 수 있게 하기 위함이다. 현재의 컨텍스트를obj
라는 변수에 넣으면 이후의 함수 안에서는 그 함수내에obj
라는 객체가 선언되어 있지 않기 때문에 상위 렉시컬 스코프에서 이 변수를 찾게 되므로 우리가 원하는 변수를 적절하게 찾고 이후의 작업을 수행한다.
모델과 컬렉션의 활용
모델과 컬렉션을 이용해서 뷰를 만들고 한다.... 흠. 적을게 없군
액션케이블. 어떻게 하면 클라이언트가 접속하는 순간 바로 구독하지 않을 수 있는가?
이 문제는 rails6의 웹패커와 관련이 있다. 솔직히 잘 모른다. 일단은 그냥 적어본다.
채널을 생성하면
~channel.js
파일에~subscription.create
함수가 만들어진다. 함수의 이름에서 알겠지만 이 함수로 인해서 현재 클라이언트는 채널을 구독하게 된다.그리고 이 파일은
application.js
에서import
가 된다. 문제는 여기서 발생한다.웹패커는 import 하는 순간 바로 변수를 생성 하기 때문이다 => 솔직히 잘 모른다ㅋㅋ
따라서
rails g channel xx
로 채널을 만드는 순간, 파일과 subscription 함수가 자동으로 만들어지고 만들어진 파일과 함수를application
에서 바로import
하기 때문에 우리가 원하지 않아도 바로 클라이언트가 채널을 구독하게 되는 것이다.자 그럼 이제 문제가 해결됐다.
import
를 하지 않으면 된다!그리고 만들어진
consumer.subscriptions.create(xx)
함수를 다른 함수로 감싸서export
하면 이제 우리가 원할 때 이 함수를import
해서 사용하는게 가능해진다.
마이그레이션 관리
이전으로 돌아가고 그런거는 나중에 해보고.. 오늘은 추가하는 부분에 대해 학습했다.
절대 명심할건, 스키마 파일을 인위적으로 수정하지 말자. 스키마 파일은 마이그레이션의 최종 결과로 사용자가 보기 편하게 만들어진 파일이다.
즉 스키마는 마이그레이션의 최종 결과물인 파일이다. 만약 수정하고 싶다면 마이그레이션을 만들어서 변경해주자
User 모델의 속성을 추가하거나 또는 이미 존재하는 열의 default 값 또는 nullable 속성 변경을 하기 위해서는 먼저 마이그레이션 파일을 만들어주자.
rails g migration addStatusToUsers
라는 명령어를 입력하면, 이름에서 바로 알수있듯이user
라는 모델에status
라는 속성을 추가해주는 마이그레이션 파일을 만드는 것. 파일안에 들어가서add_column
으로 추가해주자.만약 이미 존재하는 속성의 디폴트 값을 변경해주고 싶다면,
rails g migration changeDefaultOfStatusAsLogoutToUsers
로 마이그레이션 파일을 만들고 생성된 파일로 들어가서change ~
뭐시기 명령어로 수정해주자.
7. 오늘 학습 내용에 대한 개인적인 총평
너무 어렵다. 그래도 재밌다 화이팅하자...
8. 다음 학습 계획
액션 케이블
Last updated