2012-02-05 2 views
1

내 응용 프로그램에는 모듈을 포함해야하는 모델이 있습니다. 모델에는 'format'이라는 속성이 있는데,이 모듈은 포함될 모듈을 결정합니다. 예를 들어 format == 0 인 경우 모델은 include SingleElimination이어야하고 format == 1 인 경우 모델은 include DoubleElmination이어야합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?동적으로 모듈을 ActiveRecord에 포함하십시오.

답변

1
def include_format 
    case format 
    when 1 
    extend SingleElimination 
    when 2 
    extend DoubleElmination 
    end 
end 

after_initialize :include_format 
+0

다음과 같은 질문이 있습니다. 왜 초과 사용이 포함되어 있습니까? – Max

+0

@Max 'extends'는 메소드 본문의 컨텍스트에 정의되어 있지 않기 때문에'extends '를 사용합니다. 따라서 받아 들인 대답은'MethodNotDefined'를 발생시킵니다. 또한 클래스 본체에서 호출 될 때 그 대답을 설명하는대로 'include'가 작동합니다. 그러나 이것은 메소드 본문에서 '확장'이 추가되어야하는 곳과 다른 문맥입니다. –

+0

그 통찰력에 감사드립니다. 연장 할 때 그 구별을 알지 못했습니다. 그러나 구현이 올바르지 않습니다. after_initialize 필터에서는 형식을 호출 할 수 없습니다. 나는 인수 오류가 너무 적다. 이 문제를 해결하려면 람다를 사용해야했습니다. 나는 나를 위해 일한 것을 편집했다. – Max

관련 문제