데이터 출력을 조작하기 위한 사용자 지정 직렬 변환기 소개

2098 단어 rubyrailsbeginners
커스텀 시리얼라이저에 대한 나의 개인적인 여정은 흥미로웠습니다. 15주 코딩 부트캠프의 4단계에서 우리는 지난 주 반 동안 배운 내용을 테스트하는 코드 챌린지를 가졌습니다. 내 코드 챌린지에서 한 가지 잊어버렸고 결국 두 번의 시도 중 첫 번째 시도를 통과하지 못하게 막았습니다. 사용자 지정 직렬 변환기.

사용자 지정 serializer는 특정 시나리오나 표시 용도로 만들 수 있는 기존 serializer의 버전입니다. Ruby on Rails로 사용자 정의 직렬 변환기를 생성하는 것은 명령만큼 간단합니다.

rails g serializer /YourSerializerName/


사용자 정의 직렬 변환기는 다른 직렬 변환기와 정확히 동일한 방식으로 작동하지만 직렬 변환기를 가져오고 컨트롤러의 모든 메서드에서 블랭킷으로 사용하는 대신 메서드에서 직렬 변환기를 특별히 호출한다는 주의 사항이 있습니다. 와 같은…

def index 
    bears = Bear.all
    render json: bears, serializer: CustomBearSerializer, status: :ok
end 


이것은 실제로 메서드에 추가하기가 매우 간단하지만 사용자 지정 serializer에 제공할 수 있는 많은 기능이 있습니다. Ruby 애플리케이션에서 렌더링하는 각 해시와 관련된 데이터를 표시하는 데 사용할 수 있습니다. 표시되는 형식을 변경하거나 데이터 출력 자체를 변경하여 특정 출력에 더 많은 데이터를 추가하거나 더 적은 데이터를 표시할 수 있습니다. 또 다른. 이와 같이!

BearSerializer

attributes: :name, :weight, :packname


이것이 출력 또는 입력에 데이터를 표시하는 데 사용하는 기본 직렬 변환기라고 가정해 보겠습니다. 어떤 방법을 만들기로 결정하든 이 정보와 함께 데이터를 출력합니다. 하지만 id로 특정 곰을 요청할 때 해당 곰 새끼 목록을 추가하고 싶다면 어떻게 해야 할까요? 그렇다면 해당 show 메서드를 호출하려면 사용자 지정 직렬 변환기가 필요합니다! 이렇게 보일 것입니다.

CustomBearSerializer

attributes: :name, :weight, :packname

has_many :cubs


Bear와 Cub 관계 및 모델이 설정되어 있다고 가정하면 위의 이 사용자 지정 serializer만 있으면 새끼 목록을 출력에 추가할 수 있습니다. 이제 이전 index 예제에서 했던 것처럼 해당 serializer를 show 메서드에 추가하겠습니다!

def show
    bear = Bear.find(params[:id])
    render json: bear, serializer: CustomBearSerializer, status: 200
end


우리는 거기에 갈! 이제 ID 번호로 특정 곰을 호출하여 show 메서드를 호출하면 해당 곰에 속한 새끼 목록도 렌더링됩니다. 이 사용자 정의 직렬 변환기는 하나의 show 메서드에서만 호출되었으므로 데이터에 새끼 목록이 포함되는 유일한 시간이 됩니다!

이것은 커스텀 직렬 변환기의 매우 기본적인 버전이었지만 각 상황에 대해 원하는 정확한 방식으로 데이터를 렌더링하기 위해 레일로 코딩할 때 매우 유용할 것입니다. 이 레일 주제에 대한 나의 이상한 딸꾹질 이후, 이 글을 읽고 있는 사람이 개념을 더 잘 이해하는 데 도움이 되기를 바랍니다. 그것을 가지고 연습하고 놀면서 자신의 코드에 무엇을 표시할 수 있는지 확인하십시오! 행운을 빕니다. 언제나처럼 행복한 코딩하세요!!

좋은 웹페이지 즐겨찾기