Domanda

Sto usando DM-Observer per osservare i miei modelli DM e ho bisogno di eseguire alcune azioni in base alle modifiche allo stato all'interno del modello.Ho capito che @State viene utilizzato per memorizzare il valore di stato aggiornato, ma non sono stato in grado di capire come accedere al vecchio valore di stato.Nell'esempio qui sotto ho usato "Old_State", ma ovviamente non funziona.

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 
.

È stato utile?

Soluzione

È possibile accedere ai valori originali tramite #original_attributes hash che è indicizzato da oggetti immobiliari.Quindi il codice potrebbe sembrare così:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top