Как получить доступ к старым значениям состояния в наблюдателе datamapper? - PullRequest
1 голос
/ 14 июля 2010

Я использую 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 Ответ

3 голосов
/ 14 июля 2010

Вы можете получить доступ к исходным значениям через хэш #original_attributes, который индексируется объектами свойств.Таким образом, код может выглядеть так:

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