[PT-BR] pluck vs. select

발행: (2026년 5월 1일 PM 12:24 GMT+9)
2 분 소요
원문: Dev.to

Source: Dev.to

pluck

Rails에서는 pluck을 사용하며, 선택한 속성값들의 배열을 반환합니다.

Doctor.pluck(:id)
#=> [1, 3, 7, 8, 9, 5]

여러 개의 속성을 전달하면 pluck은 배열의 배열을 반환하며, 각 하위 배열에는 요청한 속성값들이 들어 있습니다:

Doctor.pluck(:id, :updated_at)
#=> [
#     [1, Wed, 23 Jan 2019 11:44:27.924159000 EST -05:00],
#     [3, Tue, 29 Jan 2019 15:47:30.056920000 EST -05:00],
#     [7, Thu, 28 May 2020 19:30:29.238601000 EDT -04:00],
#     [8, Thu, 28 May 2020 19:30:29.251257000 EDT -04:00],
#     [9, Sat, 26 Jun 2021 19:56:41.536687000 EDT -04:00],
#     [5, Tue, 28 Jun 2022 16:49:45.091360000 EDT -04:00]
#   ]

생성된 쿼리는 오직 지정된 속성만을 조회합니다:

SELECT "doctors"."id", "doctors"."updated_at" FROM "doctors"

select

select는 동일한 SQL을 실행하지만, 모델 객체들을 담은 ActiveRecord::Relation을 반환합니다:

Doctor.select(:id, :updated_at)
#=> #<ActiveRecord::Relation [...]>

쿼리 로그 예시:

Doctor.select(:id, :updated_at)
#   Doctor Load (0.3ms)  SELECT "doctors"."id", "doctors"."updated_at" FROM "doctors"

비교

메서드반환값객체 타입
pluckArray (또는 배열의 배열)Array
selectActiveRecord 레코드 집합ActiveRecord::Relation (모델 객체)

두 메서드 모두 동일한 SQL을 생성합니다:

SELECT "doctors"."id", "doctors"."updated_at" FROM "doctors"

차이점은 반환되는 데이터 형식에 있습니다. pluck은 순수 값만 반환하고, select는 모델 인스턴스를 반환하므로 인스턴스 메서드와 연관 관계에 접근할 수 있습니다.

0 조회
Back to Blog

관련 글

더 보기 »

Dutch용 런칭; 파트 1: 콘텐츠

배경: 저는 배우고 있는 언어가 스웨덴어라서 LangBear를 스웨덴어용으로 출시했습니다. 하지만 지금까지 단 한 명의 고객도 확보하지 못했습니다—neithe...