2010-06-25 6 views
0

연결 수거 방법 (특히, 추가 < <)을 비공개로 만드는 방법이 필요합니다. 다음은 그 예이다 : 기본적으로ActiveRecord의 연결 수거 방법을 비공개로 설정하는 방법

class Foo < ActiveRecord::Base 
    has_many :bars 

    def add_bar (bar) 
    # does something extra first 
    # but still also use the <<, ultimately 
    bars.send(:<<, bar) 
    end 
end 

, 난 내가는 "add_bar"방법을 통해 갈 필요가 응용 프로그램의 일부가 그 자체로 < <를 사용하고 싶지 않아요. 어떤 제안?

대단히 감사합니다!

답변

2

private_class_method (내 자신을 몰랐습니다 :)).

class Foo < ActiveRecord::Base 
    has_many :bars do 
    private_class_method :<< 
    end 

    def add_bar (bar) 
    # does something extra first 
    # but still also use the <<, ultimately 
    bars.send(:<<, bar) 
    end 
end 

테스트를 거치지 않았습니까? 작동하는지 확인하십시오.

+0

답장을 보내 주셔서 감사합니다! 그게 효과가없는 것 같아. 클래스 "모듈"에 대해 "정의되지 않은 메소드'<< '가 발생했습니다. 나는 또한 "private :"을 시도하고 같은 오류가 발생했습니다. 도와 주셔서 감사합니다! – janechii

1

연결 앞에있는 프록시 클래스를 만들고 원래 연결을 비공개로 만듭니다. 여기 예가 있습니다 :

관련 문제