0

私が持っている DataMapper モデルのall()andメソッドをオーバーライドしようとしていますが、いくつかの問題があります。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
  ...

これらのメソッドは、特に指定がない限り、 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