2010-11-18 5 views
2

모델에 새 메서드를 추가 할 수 있지만 기존 메서드를 덮어 쓸 수없는 것 같습니다. 여기 내 모듈Ruby의 모듈에서 기존 인스턴스 메소드를 덮어 쓰려면 어떻게해야합니까?

module ExtraMethods 
    def self.included(base) 
    base.extend(ClassMethods) 
    end 

    module ClassMethods 
    def user_extra_methods 
     include ExtraMethods::InstanceMethods 
    end 
    end 
    module InstanceMethods 
    def is_invisible? 
     true unless self.active? || self.admin? 
    end 
    end 
end 

ActiveRecord::Base.send(:include, ExtraMethods) 
User.send(:user_extra_methods) 

내가 일이 원하는 것은 모델의 메소드를 오버라이드 (override) 할 수있는 플러그인의 방법입니다 내 User.rb

include ExtraMethods 
def is_invisible? 
    true unless self.active? 
end 

에서

을거야. 어떤 생각이나 참고 문헌도 좋을 것이고, 이것에 대한 좋은 참고 자료를 찾을 수 없을 것입니다.

감사합니다.

답변

관련 문제