중첩 객체용 Ruby on Rails를 사용한 사용자 지정 직렬 변환기

코딩 부트캠프의 마지막 주를 위한 캡스톤 프로젝트를 만드는 동안 내가 직면한 가장 큰 초기 문제 중 하나는 프로젝트 지침에 따라 여러 다대다 모델 관계가 있는 프로젝트를 만드는 것이었습니다. 아이디어를 찾기 위해 내 두뇌를 샅샅이 뒤진 후, 나는 결국 프로젝트의 요구 사항을 충족시킬 콘서트 추적 아이디어를 결정했습니다.

그 개념은 내 머릿속에서 이해되었고 이 작업을 수행하는 데 어떤 모델이 필요한지 알고 있었습니다. 모델을 생성하고, 매크로 연결을 할당하고, Rails 콘솔에서 해당 연결을 테스트하는 프로세스는 매끄럽고 제가 정착한 아이디어에 매우 만족했습니다. 그러나 React에서 내 데이터를 처리하기 위해 프런트 엔드에서 백엔드 모델 컨트롤러로 API 요청을 실제로 시작하기 전까지는 내가 필요한 특정 키:값 쌍 객체를 얻지 못한다는 것을 깨달았습니다. 이 작업을 수행하도록 주문하십시오. 내 세 가지 기본 모델 간의 조인 테이블은 개체 자체의 값이 아니라 개체의 ID만 제공했습니다. 나는 이것이 일종의 직렬화가 필요하다는 것을 알고 있었지만 어떻게 해야할지 몰랐습니다.

기본적으로 내 모델은 Bands, Venues 및 Dates로 구성되었으며 모두 Concerts 조인 테이블을 통해 서로 연결되었습니다. 밴드는 콘서트를 통해 많은 장소를 가지고 있고, 장소는 콘서트를 통해 많은 데이트를 하고 있습니다. 내 의도는 날짜, 연주 밴드, 해당 콘서트를 주최하는 장소와 같은 정보가 포함된 콘서트 목록을 표시하는 콘서트 추적 앱을 만드는 것이었습니다. 나에게 문제는 내 프로젝트의 특정 세부 사항을 렌더링하는 데 필요한 이 모든 관련 정보를 포함하는 Concert 객체가 React에서 데이터를 처리할 때 이러한 각 객체에 대한 ID만 보유한다는 것입니다.

이 Concert 개체에 대한 액세스 권한을 받기 위해 백엔드 서버로 가져오는 것은 다음과 같은 형식으로 약속을 반환했습니다.

{date_id: 4, venue_id: 12, band_id:7}


Javascript 객체 점 표기법을 통해 더 쉽게 액세스할 수 있도록 완벽한 세상에서 조인 테이블을 만들기 위해 위에서 본 객체를 나타내기 위해 백엔드에 내 데이터를 시드하는 것이 이치에 맞았지만 내 객체가 더 많이 보이길 원했습니다. 이와 같이:

{date: "10/23/2022, venue: "CrossRoadsKC", band: "BROCKHAMPTON}


Bands, Venues 및 Dates 모델에 대한 직렬화를 가지고 놀고 난 후 내 솔루션은 다음과 같이 보였습니다.

def all_concerts
    self.object.concerts.map do |each_concert|
      {"concert_date": each_concert.concert_date, "concert_venue": each_concert.venue, "concert_band": each_concert.band }
    end
  end


기본적으로 여기에서 내가 한 것은 키의 이름을 직접 지정하고 해당 키에 필요한 관련 값을 할당할 수 있는 사용자 지정 개체를 만드는 것뿐이었습니다. 이는 현재 코드를 실행하는 특정 개체인 self의 인스턴스를 가져와서 수행합니다. 우리의 경우에는 Band, Venue 또는 Date 중 하나이며 중첩된 콘서트를 매핑하여 특정 작업을 수행합니다. 이 경우 해당 작업은 특정 Band, Venue 또는 Date에 대한 각 콘서트를 가져오고 콘서트 조인 테이블이 속해 있는 연결을 통해 액세스할 수 있는 키와 값을 할당합니다.

"band_concerts"개체는 내가 백엔드에 API 요청을 할 때마다 내 밴드에 내포된 개체로 표시되어 프런트 엔드에서 데이터를 처리할 때 필요한 정확한 개체를 쉽게 액세스하고 관련 정보와 함께 제공합니다. 내가 작업했던 각 모델.

좋은 웹페이지 즐겨찾기