2012-10-18 2 views
1

데코레이터 클래스를 사용하여 내 모델에 일부 기능을 추가하고 있습니다. 이 정보가 일부 값을 처리하는 데 사용되지만 데이터베이스에 아무 것도 저장하지 않기를 원합니다.ActiveRecord 연결에서 데코레이터 패턴 및 형식 불일치

내가 가진 내 장식 클래스, 뭔가 같은 :

class Deco 

    def initialize o 
    @target = o 
    end 
    def method_missing method, *args, &block 
    @target.send(method, *args, &block) 
    end 
    #my extra methods 
end 

그리고 내가 그렇게처럼 사용 : 나는 다른이 deco_mode을 연결할 때

deco_model = Deco.new(model) 
여기

이 문제가, I 형식 불일치 오류가 발생합니다. 그러나 내 데코레이터 클래스에 다음 메서드를 추가하면 :

def class 
    @target.class 
end 

여전히 동일한 오류가 발생하지만 다음과 같이 표시됩니다. 모델 (#aaaaaa) 예상 모델 (#aaaa) 예, "모델"은 내 모델의 클래스이고 개체 ID는 모두 사례 ... 그래서 개체 ID가 동일하면 왜 아직도 예외가 발생합니까?

감사

+0

다음과 같은 SimpleDelegator를 사용하는 것이 더 쉬울 수도 있습니다. ** class Deco

답변

4

내가 또한 수행 한 후 ActiveRecord::Associaions::Association

내부에 사용되는 is_a? 방법을 덮어했다 밝혀 :

def is_a? klass 
    @target.class.object_id == klass.object_id 
end 

이 예외가 더 이상 발생되지 않습니다.