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

 

 

프론트엔드 개발환경 학습하기

프론트엔드 개발환경의 이해와 실습 (38/39)

 

[인프런] 프론트엔드 개발환경의 이해와 실습 (웹팩 - 핫 로딩)

핫 로딩이 무엇인지 알아보고, 웹팩에서 직접 적용해보자. 핫 로딩 핫 모듈 리플레이스먼트 웹팩 개발서버의 한 기능으로, 코드 변경 사항이 있을 때 전체 화면을 갱신하지 않고 변경된 모듈의

dass-develop.tistory.com

 

 

[인프런] 프론트엔드 개발환경의 이해와 실습 (웹팩 - 최적화)

최적화가 필요한 상황과 웹팩에서 최적화를 적용하는 방법에 대해 알아보자. 최적화 코드가 많아지면 웹팩으로 번들링한 결과물의 크기도 커진다. 메가바이트(MB) 단위로 커질 수 있는데, 이는

dass-develop.tistory.com