我希望能够在 DataMapper 中定义一个回调,并在交易中发生这种情况以及伴随的更新。例如:
class Comment
include DataMapper::Resource
has n, :updates
property :id, Serial
property :text, String
after :update do
self.updates.create(:text => self.text)
end
end
我认为上面的代码试图做什么很清楚:任何时候Comment
更新 a ,也创建一个相应的Update
记录。现在,一种可能的情况是,您可以更新帖子,但无论出于何种原因,创建更新都会失败,因此会丢失一些历史记录。所以我真的很希望这种操作发生在一个事务中。
这可能吗?我可以想到一些解决方法(例如,定义自定义update
方法);但我很想知道是否有“正确”的方法,或者其他人是否可以想到优雅的方法。