2012-07-28 53 views
0

我使用數據庫的數據映射器。我有一張桌子。更新表列

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 

也就是說,我只想要一個值是true。但是當我保存數據時,我收到一個錯誤。

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

爲什麼?我該如何解決這個問題? 謝謝。

回答

0

您會得到stack too deep,因爲當您撥打update時,它會再次調用before :save鉤子。你需要的方法是update!,它繞過鉤子。