0

사용자가 특정 종류의 사진을 공유하는 레일 앱이 있습니다. 현재 앱은 유효하기 전에 여러 가지 방법으로 사진을 분류해야하므로 사용자는 사진을 한 번에 하나씩 업로드하고 카테고리를 분류하여 데이터베이스에 저장해야합니다.레일 : 프로 그레시브 검증, STI 또는 다른 것을 사용 하시겠습니까?

분류 작업에 시간이 걸리므로 사진을 일괄 업로드 한 다음 시간이 지나면 다시 분류하고 분류 할 수 있지만 사진을 완전히 분류하지 않고 저장하면 혼합하지 않아도됩니다. "완전한"사진과 함께.

사용자가 한 번에 여러 사진을 업로드 한 다음 개인 대기열을 따라 진행하고 시간이 지나면 각 사진 (작성 완료)을 분류 할 수있는 일종의 "마법사"시스템이 이상적입니다. .

내 질문은 : 어떻게 이런 문제에 접근하겠습니까?

단일 테이블 상속을 사용하여 Photo : IncompletePhotoCompletePhoto의 두 개의 하위 클래스를 만드는 방법을 생각해 보았습니다. IncompletePhoto은 이미지 파일 자체 만 필요하지만 CompletePhoto은 분류가 필요합니다. 사용자가 자신의 IncompletePhotos를 볼 수는 있지만 앱 내의 검색 결과는 CompletePhotos 만 반환합니다.

내가 해결하려고하는 문제에 대한 올바른 접근 방식처럼 들리겠습니까, 아니면 더 좋은 방법이 있습니까? 나는 전에 STI를 사용 해본 적이 없으며 좋은 생각인지 확실하지 않습니다.

답변

0

난 당신이 데이터베이스와 모델 모두에서 DRY 혜택을 얻을 것입니다 사건에 대한 다른일부와 객체, 전부는 아니지만 일반 속성을 가질 때 STI가 유용하게 만들어 졌음을 말하고 싶지만. 그러한 모델의 인스턴스 유형을 올바르게 변경하는 방법이 있는지 확실하지 않습니다. 음, type 열 자체를 수정할 수는 있지만 저장 후 모델을 다시 가져오고 수동으로 검증을 실행하지 않는 한 객체의 Ruby 클래스는 동일하므로 유효성 검사가됩니다. 후자는 나를 위해 더러운 해킹처럼 들린다.

올바른 방법으로 complete 열을 추가하고 validates ..., :if => :complete 형태의 유효성 검사기를 사용하는 것이 좋습니다.

+0

감사합니다. 이것은 의미가 있으며, 제가 결정한 방향입니다. – Andrew

관련 문제