본문 바로가기

Ruby on Rails2

[Ruby On Rails] Module Mixin (1) - include, prepend, extend Ruby는 다중 상속을 지원하지 않는다. 즉 Ruby 클래스는 하나의 부모 클래스(슈퍼 클래스)만 가질 수 있다는 뜻이다. Ruby에서는 다중 상속을 모듈의 Mixin을 통해 구현이 가능하다. Mixin에 대해 알아보기 전 Class와 Module의 차이점과 클래스 조상의 목록인 Ancestors에 대해 먼저 확인해보자. Class vs Module Class 객체 지향 프로그래밍에서 클래스는 클래스 인스턴스, 클래스 객체, 인스턴스 객체 또는 간단히 객체라고 하는 자체 인스턴스를 만드는 데 사용되는 구성이다. 클래스는 인스턴스가 상태와 동작을 가질 수 있도록 하는 구성 요소를 정의한다. 따라서 클래스는 객체 생성을 위해 만드는 것이다. Module 루비에서 모듈은 “메서드와 상수의 모음”을 뜻한다. 따.. 2023. 4. 18.
[Ruby On Rails] Eager loading으로 N+1 문제 해결하기 Ruby On Rails에서 N+1 문제를 해결할 수 있는 방법에 대해 알아보려고 한다. N+1 문제란? 연관 관계가 설정된 엔티티를 조회할 경우 조회된 데이터 개수(n)만큼 연관 관계의 조회 쿼리가 추가로 실행되는 것을 의미한다. School 테이블과 Teacher 테이블이 1:N 관계라고 가정해보자. class School < ApplicationRecord has_many: :teachers end class Teacher < ApplicationRecord belongs_to: :school end 각 학교별 선생님들의 이름을 출력하고자 했을 때, School 데이터 전체를 조회하는 쿼리 하나와 각각의 school에 속해 있는 teachers 데이터를 조회하는 쿼리가 추가로 발생하는 것을 볼 수 .. 2023. 4. 16.