2012-10-02 4 views
0

나는 세 가지 모델 및 해당 테이블과 컨트롤러가 있습니다레일에서 이것을 어떻게 코드합니까?

  • 요청
  • DirectPatch
  • UTPFiberPatch

사용자는 새로운 요청을 생성하고 요청의 유형을 정의 : 직접 또는 UTP를/Fiber

사용자가 저장을 클릭하면 요청이 저장되고 사용자가 수정 화면으로 리디렉션되어 crea 해당 요청에 해당하는 모든 패치 항목을 표시하십시오.

  • 각 패치 항목은 선택한 요청 유형에 따라 직접 또는 UTP 테이블에 단일 행으로 저장됩니다. request_id 열은 외래 키 역할을합니다.
  • 직접보기와 UTP/섬유 모두보기와 양식이 다릅니다.
  • 사용자는 모든 요청을 하나의 홈페이지에서보고 클릭하여 편집 할 수 있습니다. 사용자는 한 페이지에서 요청에 대한 모든 패치 행을보고 클릭하여 기존 수정 또는 새로 추가를 할 수 있습니다.

    1. 라우팅, 컨트롤러 및 보기를 설정하는 가장 좋은 방법은 무엇입니까?
    2. 새 패치를 만들 때 요청 ID가 전달되어 자동으로 저장됩니까?

나는 기술 이름이 존재하는 경우 I는 데 문제에 대해 정확히 모르겠지만, 자세한 내용을 추가하고 필요한 경우 질문에 대한 답변을 드리겠습니다.

답변

0

당신은 요청 모델의 다형성 연관을 사용할 수

belongs_to :patch, :polymorphic => true 

두 개의 열 요청 테이블에 추가

patch_id : integer 
patch_type : string 

당신이 요청을 생성하고 사용자가 패치 타입을 선택, 요청에이 패치 객체를 할당하면 두 개의 새로운 열이 채워집니다. (- 당신은 다형성 협회와 열망로드 할 수 없습니다 주) 당신이 모델을 요청에서 당신은 다음 데이터베이스에 저장된 세부 정보를 기반 패치의 적절한 유형을 당신을 다시 줄 것이다

request.patch 

를 호출 할 수 있습니다.

보기를 수행하려면 편집 화면에서 일부 패치 유형을 기준으로 부분을 렌더링 할 수 있습니다.

+0

감사합니다. 저는 이제 다형성 연관에 대해 더 많이 읽었으며 실제로 그렇게하는 것이 가장 좋은 방법인지 궁금합니다. 논리적 인 관점에서 볼 때 요청에는 선택한 요청 유형에 따라 많은 DirectPatches 또는 UTPFiberPatches가 있습니다. 하지만 당신은 협회가 다른 방향이라고 말하고 있습니까, 요청은 패치에 속해 있습니까? –

관련 문제