Open shaynekang opened 9 years ago
제가 구현하던 것도 같은 고민이 있었는데 그냥 저희끼리 있을때 간단히 얘기하기로는 "관계를 끊어 남겨버리는 한이 있더라도 소중한(?) DB를 날리진 말자"로 정했었는데요. 다시 정책을 세워볼 필요가 있을까요?
그런 경우에는 destroy할 때 flag를 세우는 방식을 사용하는 걸 권장합니다. ㅎㅎ
User는 없는데 Invitation만 남아있는 경우가 생긴다면 곤란할 것 같습니다. invitations.user_id가 nil인게 버그로 생긴 잘못된 데이터인지, User가 삭제된 데이터인지 알 수 없으니까요.
User를 지울거면 둘 다 지우고, 안 지울거면 둘 다 안 지우되 flag를 세워주는 게 좋을 것 같아요. ㅎㅎ
레일즈 모델의 has_many에는 dependent: :destroy 라는 개념이 있습니다. 부모 모델이 DB에서 제거되었을 경우, 자식 모델도 함께 DB에서 없애주는 기능이죠.
가령 사용자와 초대장 모델의 연관관계를 다음과 같이 정의했다면,
사용자를 DB에서 제거하면 초대장이 남아있게 됩니다. 이를 방지하기 위해서는 다음의 코드를 추가해야겠죠.
모델 연관관계를 살펴보고
dependent: :destroy
가 필요한 부분은 추가해 주면 좋겠습니다. ㅎㅎ