TIL
# 211118 TIL ([Ruby, slim] Model 파일 구조 파악하기)
inthess
2021. 11. 19. 12:02
장기현장실습
PLSnote 이슈
#2644 그룹에 탈퇴신청을 하고 일정기간이 지나면 탈퇴가 되는 기능 이슈 진행중
- 모델 구조 파악과 관련한 정리
- 보통 상단에는 스키마로 사용될 단어?속성?들을 작성해둔다. 이 때, 앞에 사용하는 예약어 같은게 있는데 각각 어떤 의미를 가지고 있는지 살펴보자.
- attr_accessor
- 자동으로 해당 변수의 접근자와 설정자를 생성해준다. 접근자와 설정자는 getter, setter 느낌이고, 하나만 생성하고 싶을 때는 attr_accessor 대신 attr_reader, attr_writer를 사용하면 된다.
- has_one_attached
- 추가된 파일 업로드를 간단히 실행해주는 기능을 사용할 수 있다. 컬럼을 따로 추가할 필요 없이 모델에 has_one_attached를 추가해주면 된다.
- has_many
- 다른 모델과 1:다 관계를 의미하는 것이다. 주의할 점은 has_many A 관계를 선언하는 경우에 A가 복수형 이름을 가진다는 것이다. ex) has_many :projects
- has_many에 여러 옵션이 있는데 plsnote 코드에서 사용된 :dependent, :through 의 의미
- :dependent - 이 옵션을 :destroy(해당 개체를 삭제하면 연결된 개체에 대해 destroy 메서드가 호출되어 해당 개체가 삭제됨), :delete_all(해당 개체를 삭제하면 destroy 메서드가 호출되지 않고 연결된 개체가 삭제됨), :nullify(해당 개체를 삭제하면 연결된 개체의 외래 키가 null로 설정됨) 로 설정할 수 있다.
- :through - 쿼리를 수행할 join model을 지정한다. 다:다 관계를 구현하는 방법을 제공한다.
- enum
- default: 0, 1, 2 ...
- scope
- 필터링 느낌으로 약간 조건같은 것을 함께 작성한다.
- vaildates_presence_of
- 지정된 속성이 비어있는지 검증해준다. 값이 nil이거나 빈 문자열인지 검증하기 위해서 +blank? 메서드를 사용한다.
- a.k.a 꼭 있어야 하는 값
- 하단에는 자주 사용되는 기능같은 것들을 메서드로 정의해둔다.
- 기능추가
- 사용자가 탈퇴 버튼을 클릭해서 생성된 잡은 그룹관리자가 60일 이전에 탈퇴처리를 해버리면 그 잡을 없애야 한다. 그러기 위해 일단 잡을 없애는 코드를 추가했고, 잡을 생성하는 곳에도 @group_user를 정의해주었다.
def withdraw job = DeleteGroupUserJob.set(wait: 60.day).perform_later(params[:group_id] , current_user.id) if job @group_user = GroupUser.where(group_id: params[:group_id], user_id: current_user.id) @group_user.update job_id: job.provider_job_id end end def cancel_withdraw @group_user = GroupUser.where(group_id: params[:group_id], user_id: current_user.id) Sidekiq::ScheduledSet.new.find_job(@group_user.job_id).delete @group_user.update job_id: nil end
- 사용자가 탈퇴 버튼을 클릭해서 생성된 잡은 그룹관리자가 60일 이전에 탈퇴처리를 해버리면 그 잡을 없애야 한다. 그러기 위해 일단 잡을 없애는 코드를 추가했고, 잡을 생성하는 곳에도 @group_user를 정의해주었다.
프론트엔드 개발환경 학습하기
프론트엔드 개발환경의 이해와 실습 (38/39)
[인프런] 프론트엔드 개발환경의 이해와 실습 (웹팩 - 핫 로딩)
핫 로딩이 무엇인지 알아보고, 웹팩에서 직접 적용해보자. 핫 로딩 핫 모듈 리플레이스먼트 웹팩 개발서버의 한 기능으로, 코드 변경 사항이 있을 때 전체 화면을 갱신하지 않고 변경된 모듈의
dass-develop.tistory.com
[인프런] 프론트엔드 개발환경의 이해와 실습 (웹팩 - 최적화)
최적화가 필요한 상황과 웹팩에서 최적화를 적용하는 방법에 대해 알아보자. 최적화 코드가 많아지면 웹팩으로 번들링한 결과물의 크기도 커진다. 메가바이트(MB) 단위로 커질 수 있는데, 이는
dass-develop.tistory.com