我正在使用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 
.

有帮助吗?

解决方案

您可以通过#original_attributes散列访问原始值,该散列由属性对象索引。所以代码可以看起来像:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top