2011-03-01 2 views
0

다른 방식으로 이것을 설명하려고 노력한다. 내 시스템에는 단계로 구성된 코스가 있습니다. 단계에는 여러 유형이 있습니다 : 비디오, 퀴즈, 텍스트, 설문 조사 ... 등. 이 단계들 각각은 제목, 요약, 클라이언트 및 위치와 같은 공통 데이터를 공유합니다. 그러나 각 단계는 데이터에 대해 완전히 다른 모델을 가지고 있습니다. 퀴즈 단계에는 많은 다른 테이블과 필드가 있으며, 텍스트 단계에는 실제로 하나의 추가 필드 만 있습니다. 따라서 Single Table 상속이 작동한다고 생각하지 않습니다.내가 깨끗하게 모델링하고 있는지 확인하려고 노력한다.

그러나 문제는 모든 단계를 한 번에보고 링크를 표시하고 편집하려는 경우에 발생합니다.

if @step.type=="Quiz" 
    edit_step_quiz_path(@step.getSpecificStepObject()) 
elsif @step.type == "Text" 
    edit_step_text_path(@step.getSpecificStepObject()) 
elsif @step.type=="Video" 
    edit_step_video_path(@step.getSpecificStepObject()) 
end 

내가 대신 내 주요 "단계"컨트롤러의 편집 방법은 로직을 가지고해야 : 나는 각 단계 유형에 대해 서로 다른 컨트롤러를 가지고 있기 때문에

, 나는 내 컨트롤러에서 이런 일을하고 싶지 않아 내보기가 깨끗해 지도록 편집하기 위해 적절한 위치로 리디렉션 하시겠습니까?

답변

2

난 당신이 컨트롤러를,보기에 그 코드를 넣어 고려하지 않는 것을 의미 있으리라 믿고있어.

def edit_step_path(step) 
    send("edit_step_#{step.type.downcase}_path".to_sym, step.getSpecificStepObject) 
end

그럼 당신은 그냥 edit_step_path(@step)

+0

이 무엇을 "보내기"를 않습니다 호출 할 수 있습니다 : 나는 도우미 메서드를 정의 할 것인가? –

+0

그것을 알아 냈습니다. 감사 –

관련 문제