처음에는 OOP의 virtual 개념이랑 헷갈려서 많이 혼동했던 부분.
ecto에서 field를 정의할 때 virtual을 정해줄 수 있다.
여기서 virtual은 DB에 저장하지 않는 field라는 뜻이다.
DB에 저장하지도 않은 테이블이 왜 필요하나면, 이것을 이용해서 유용한 처리를 할 수 있기 때문이다. 그 스키마와 연관된 값이지만 저장할 필요는 없는, 그런 값이 필요할 때가 있다.
공식 문서에서 발췌한 설명이다.
이 경우에서는 password 필드를 virtual로 하였다. password 필드는 평문 패스워드가 들어가는데 DB에 직접 들어갈 필요는 없다. 하지만 user와 관련된 값이기에 분리하기도 애매하다
virtual로 저장되기에 DB에 저장되지 않는다. changeset에서 이 값을 변환해서 encrypted_password를 갱신한 후, 이 값만 DB에 넣어주면 된다.
'#TIL' 카테고리의 다른 글
Jackson 관련 어노테이션을 여러개 묶어 쓰려면 @JacksonAnnotationsInside 이 필수 (0) | 2022.12.30 |
---|---|
신비로운 C++의 세계 (feat. vector와 I64d) (0) | 2020.10.24 |
테이블간의 Cardinality와 객체 내의 Attribute간의 Cardinality? (0) | 2020.10.14 |
Flask + SQLAlchemy를 사용하며 배운것들을 정리 (0) | 2020.10.12 |
C++의 Rule of Zero (0) | 2020.10.08 |