2013-10-07 16 views
17

Czy istnieje sposób śledzenia zmian w modelu na after_commit podczas tworzenia rekordu? Próbowałem używać brudnego modułu i byłem w stanie śledzić zmiany, gdy rekord został zaktualizowany, ale kiedy tworzony jest rekord, zmiany nie są rejestrowane.Śledzenie zmian modelu w after_commit: on =>: tworzenie wywołania zwrotnego

+0

Jak mogą wystąpić jakiekolwiek zmiany, gdy coś właśnie powstaje? –

+0

Pola od zera do prawidłowej wartości. –

Odpowiedz

45

Nie można użyć metody szyn changed?, ponieważ zawsze będzie zwracać fałsz. Aby śledzić zmiany po zatwierdzeniu transakcji, należy użyć metody previous_changes. Zwróci hash z nazwą atrybutu jako kluczem. Możesz następnie sprawdzić, czy nazwa atrybutu ma wartość mieszania:

after_commit :foo 

def foo 
if previous_changes[attribute_name] 
    #do your task 
end 
end 
+4

dzięki! Aby sprawdzić, czy hash zawiera twój atrybut, możesz zrobić coś takiego: jeśli @ item.previous_changes.has_key? ('Attribute_name') –

Powiązane problemy