2011-07-01 7 views
5

dany model takiego:Szyny, czy w modelu istnieje sposób dostarczenia dif od ostatniej aktualizacji?

class SentenceItem < ActiveRecord::Base 

    after_update :send_changes 

    def send_changes 
    #### Is it possible to do a diff here with dirty/changed? Showing what's changed since the last save? 
    end 

end 

I że modle zdanie ma pole tekstowe.

Czy można tu zmienić różnicę z brudną/zmienioną? Pokazuje, co się zmieniło od czasu ostatniego zapisu?

Dzięki

Odpowiedz

6

Tak, jest sposób. Z dokumentacji ActiveModel::Dirty:

Nowo instancja obiektu pozostaje niezmieniona:

person = Person.find_by_name('Uncle Bob') 
person.changed?  # => false 

zmienić nazwę:

person.name = 'Bob' 
person.changed?  # => true 
person.name_changed? # => true 
person.name_was  # => 'Uncle Bob' 
person.name_change # => ['Uncle Bob', 'Bob'] 
person.name = 'Bill' 
person.name_change # => ['Uncle Bob', 'Bill'] 

które atrybuty zostały zmienione?

person.name = 'Bob' 
person.changed  # => ['name'] 
person.changes  # => { 'name' => ['Bill', 'Bob'] } 
+0

Świetna odpowiedź, bardzo dokładny i prosty przegląd modułu 'Dirty'. –

Powiązane problemy