0

이것은 주로 디자인 패턴 질문입니다. 하나의 유형의 모델을 사용하여 여러 소스에서 데이터를 생성 할 수 있습니다. 예를 들어 Nokogiri로 스크린 스크래핑을 통해 또 다른 레코드가 생성되는 API에서 레코드 하나를 생성 할 수 있습니다.여러 데이터 원본에서 동일한 모델 만들기

제 문제는 이러한 다양한 데이터 소스를 가장 잘 추출하는 방법에 있습니다. 지금은 모델의 속성을 설정하는 데 사용하는 동일한 해시를 반환하는 lib 클래스를 작성 중입니다. 그러나 이것이 STI를 사용하는 경우가 아닌지 궁금합니다. 아니면이 일을하는 다른 방법이 있다면 나는 단지 생각하고 있지 않습니다.

답변

0

여러분의 디자인 결정은 어떤 특성이 일지에 따라 달라질 것이라고 생각합니다.. 설명에 따르면 여러 데이터 소스가있는 모델이 있지만 소스에 관계없이 동일한 특성을 저장하는 것처럼 들립니다. 이 경우 STI는 과도한 것처럼 보입니다. 표에서 행을 검색 할 때 소스가 API인지 또는 화면 스크래퍼인지는 중요합니까? 그렇지 않다면 각 데이터 소스에 대해 별도의 메소드를 정의하고 컨트롤러에서 적절한 메소드를 사용할 수 있습니다.

@instance = MyModel.new(:datasource=>"API")` 

나는 상속 (또는 모듈의 코드에 혼합) 당신이 정말 필요하지 않는 한에 대해 걱정하지 마십시오 말할 것입니다. 몇 가지 결함이 있습니다 - STI는 일부 보석/플러그인에서 완전히 지원되지 않습니다.