2013-04-19 1 views
0

DataMapper 모델에서 all()first() 메서드를 재정의하려고하는데 몇 가지 문제가 있습니다. 내 메소드가 호출되고 있지만 (즉각적으로 명백 해짐) 반복적으로 호출하여 SystemStackError를 발생시킵니다. 이 모든 방법이해야 할DataMapper 메서드를 재정의하는 동안 무한 재귀

class Model 
    include DataMapper::Resource 
    include OtherModule 

    def self.all(options = {}) 
    do_something() 
    self.all(options.merge!(:deleted => false)) 
    end 

    def self.first(options = {}) 
    self.first(options.merge!(:deleted => false)) 
    end 

    property :id,   Serial 
    property :name,   Text 
    ... 

은 별도로 명시하지 않는 한 :deleted => false으로 all 또는 first 메소드를 호출합니다.

나는 아무 소용

def self.all(options = {}) 
    super.self.all(options.merge!(:deleted => false)) 
    end 

def self.all(options = {}) 
    do_something() 
    super.all(options.merge!(:deleted => false)) 
    end 

을 시도했다. 이 무한 재귀 문제를 해결할 방법이 있습니까?

답변

1

당신은 오용하는 슈퍼

def self.all(options={}) 
    do_something() 
    super(options.merge!(:deleted => false)) 
end