Come accedere ai vecchi valori di stato all'interno dell'osservatore di Datamapper?
-
15-09-2020 - |
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
. 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