0

データベースには datamapper を使用しています。私はテーブルを持っています。

class ZedTable
  include DataMapper::Resource
  property :id,         Serial
  property :label,       String 
  property :now,    Boolean, :default => false  

  before :save do 
    ZedTable.all.update(:now => false)
    self.now = true
  end
end

つまり、1 つの値のみが必要でしたtrue。しかし、データを保存するとエラーが発生します。

Failure/Error: Unable to find matching line from backtrace
 SystemStackError:
   stack level too deep

なんで?そして、どうすればこの問題を解決できますか? ありがとう。

4

1 に答える 1

0

stack too deepを呼び出すとupdate、最初にbefore :savehook が再度呼び出されるため、 get が取得されます。必要な方法はupdate!、フックをバイパスすることです。

于 2012-07-28T18:40:18.620 に答える