1

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 
4

1 に答える 1

3

プロパティオブジェクトによってインデックス付けされた#original_attributesハッシュを介して元の値にアクセスできます。したがって、コードは次のようになります。

if original_attributes[properties[:state]] == 1 && state == 2
  # do something
end
于 2010-07-14T12:54:32.990 に答える