我正在尝试覆盖我所拥有的DataMapper模型中的all()
和first()
方法,但是存在一些问题。我的方法被调用了,但是(很明显)它们会递归地调用它们并导致SystemStackError。
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
...
除非另有说明,否则所有这些方法都应使用all
调用first
或:deleted => false
方法。
我试过
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
无济于事。有没有解决这种无限递归问题的方法?
答案 0 :(得分:1)
你在滥用超级
def self.all(options={})
do_something()
super(options.merge!(:deleted => false))
end