0

我正在尝试覆盖我拥有的 DataMapper 模型中的all()andfirst()方法,但是存在一些问题。我的方法被调用了,但是(很明显)它们递归地调用自己并导致 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
  ...

除非另有说明,否则所有这些方法都应该调用allorfirst方法。: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

无济于事。有没有办法解决这个无限递归问题?

4

1 回答 1

1

你在滥用超级

def self.all(options={})
    do_something()
    super(options.merge!(:deleted => false))
 end
于 2013-04-19T17:41:22.350 回答