我将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
也就是说,我只想要一个值true
。但是当我保存数据时,我得到一个错误。
Failure/Error: Unable to find matching line from backtrace
SystemStackError:
stack level too deep
为什么呢?我该如何解决这个问题? 感谢。
答案 0 :(得分:0)
你得到stack too deep
,因为当你致电update
时,它会再次呼叫before :save
。你需要的方法是update!
,它会绕过钩子。