[Rails] Serialize
대상 의 직렬 화 와 반 직렬 화 과정 에서 실수 하지 않도록 하기 위해 서 는 대상 의 유형 과 전환 후의 목표 형식 을 명 확 히 해 야 한다.전환 형식 을 지정 하지 않 으 면 기본적으로
YAML
전환 할 대상 유형 을 Array, Hash, JSON
로 지정 하면 해당 텍스트 를 내 보 냅 니 다. 저 장 된 복잡 한 물체 가 지정 한 유형 과 일치 하지 않 으 면 ActiveRecord::SerializationTypeMismatch
이상 을 던 집 니 다.class User < ApplicationRecord
serialize :tags, Array
serialize :favoriates, Hash
serialize :preferences, JSON
end
Tip: 데이터 베 이 스 는 직렬 화 된 데 이 터 를 저장 하 는 형식 이 가장 좋 습 니 다
text
. 일반 텍스트 형식 이 고 충분 합 니 다.Tip: 해시 키 값 을 저장 할 때 사용 하 는 키 가 기호 인지 문자열 인지 주의 하 십시오. 직렬 화 된 값 도 차이 가 있 습 니 다. 같은 문자열 과 기호의 직렬 화 값 도 다 르 고 반 직렬 화 형식 도 일치 합 니 다.직렬 화 간단 한 유형 을 제외 하고 사용자 정의 직렬 화 형식 대상 도 만 들 수 있 습 니 다.클래스 에서 두 가지 방법
self.dump
을 직렬 화 대상 으로 정의 하고 self.load
반 직렬 화 대상 으로 정의 하면 사용자 정의 대상 의 직렬 화 를 실현 할 수 있다.class User < ApplicationRecord
# custom
serialize :duration_field, Duration
serialize :task_list_field, TaskList
end
class TaskList
def self.dump ... end
def self.load ... end
end
Tip: 서열 화 과정 에서 대상 의 유형 이 일치 하 는 지 판단 해 야 합 니 다. 만약 에 부합 되 지 않 으 면 공식 적 인 예 에 따라 던 져 야 합 니 다
ActiveRecord::SerializationTypeMismatch
. 그리고 반 서열 화 전에 저 장 된 값 이 비어 있 지 않 고 요구 에 부합 되 는 지 판단 하여 작성 한 코드 를 더욱 튼튼 하 게 해 야 합 니 다.직렬 화 는 빠 른 액세스 대상 을 도 울 수 있 는 편리 함 이 많 지만 데이터 베 이 스 를 조회 할 때 복잡 해 지 는 것 이 단점 이다.그래서 쓸 때 써 야 지 함부로 써 서 는 안 된다.또한
postgresql json
유형 과 직렬 화 는 매우 비슷 하기 때문에 이런 상황 에서 직렬 화 를 사용 할 필요 가 없다.몇 가지 직렬 화 된 적용 상황 을 요약 한다. 규칙 을 정의 할 때 사용자 가 선 호 하 는 것 을 저장 할 때.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.