如何在datamapper观察者中访问旧的状态值?

时间:2010-07-14 09:42:52

标签: ruby model datamapper observers

我正在使用dm-observer观察我的dm模型,我需要根据模型中的状态变化执行一些操作。我已经发现@state用于存储更新的状态值,但我无法弄清楚如何访问旧的状态值。在下面的例子中,我使用了“old_state”,但显然这不起作用。

class Adam
    include DataMapper::Resource

    property :id, Serial
    property :name, String
    property :state, Integer
end

class AdamObserver
    include DataMapper::Observer
    observe Adam

    before :update do
        if old_state == 1 && @state == 2
            #do something 
        end
    end
end 

1 个答案:

答案 0 :(得分:3)

您可以通过属性对象索引的#original_attributes哈希来访问原始值。所以代码看起来像这样:

if original_attributes[properties[:state]] == 1 && state == 2
  # do something
end