Ruby on Rails

고급 ActiveRecord 쿼리

Query interface, where, joins, includes, eager loading, N+1 문제, transactions, locking(optimistic/pessimistic)

28 면접 질문·
Mid-Level
1

기본 키로 레코드를 조회하고 찾을 수 없을 때 예외를 발생시키는 ActiveRecord 메서드는 무엇인가요?

답변

find 메서드는 기본 키로 레코드를 조회하며, 레코드가 존재하지 않으면 ActiveRecord::RecordNotFound 예외를 발생시킵니다. 이를 통해 코드가 nil 값으로 계속 진행하는 대신 명시적으로 실패하도록 보장합니다. 예외를 피하고 대신 nil을 반환하려면 find_by(id: value)를 사용하세요.

2

ActiveRecord에서 find_by와 where.first의 주요 차이점은 무엇인가요?

답변

find_by는 단일 레코드 또는 nil을 직접 반환하는 반면, where.first는 ActiveRecord relation을 반환한 후 first를 호출하여 첫 번째 결과를 가져옵니다. 실제로 find_by는 LIMIT 1로 최적화된 쿼리를 생성하지만, where는 첫 번째 요소를 선택하기 전에 더 많은 데이터를 로드할 수 있습니다.

3

ActiveRecord에서 where 메서드에 여러 조건을 전달하려면 어떻게 해야 하나요?

답변

where 메서드는 여러 키를 가진 해시를 받아 AND로 결합될 여러 조건을 지정합니다. 예를 들어, User.where(status: 'active', role: 'admin')는 WHERE status = 'active' AND role = 'admin'을 생성합니다. OR 조건의 경우 or 또는 원시 SQL 쿼리를 사용하세요.

4

ActiveRecord에서 N+1 문제란 무엇인가요?

5

연관을 미리 로드하여 N+1 문제를 해결하려면 어떤 메서드를 사용해야 하나요?

+25 면접 질문

다음 면접을 위해 Ruby on Rails을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기