2013-02-26 10 views
18

Dostaję następujący błąd,nie może modyfikować mrożone Hash w rails3

can't modify frozen Hash 
/home/.rvm/gems/[email protected]/gems/activerecord-3.2.6/lib/active_r 
ecord/attribute_methods/write.rb:38:in `[]=' 
/home/.rvm/gems/[email protected]/gems/activerecord-3.2.6/lib/active_r 
ecord/attribute_methods/write.rb:38:in `write_attribute' 

z tej linii

write_attribute(:value, new_value) 

ten może być prowadzony prawidłowo dla niektórych dni. Ale teraz kończy się niepowodzeniem z powyższym błędem. Wypróbowałem na to rozwiązanie, ale nic dla mnie nie działa.

+2

jest przedmiotem zniszczone? – apneadiving

+0

tak, niektóre z obiektów mogą zostać zniszczone. –

+0

następnie masz odpowiedź – apneadiving

Odpowiedz

29

Jak wyjaśniono w komentarzach, nie można aktualizować atrybutów na zniszczonych obiektach.

Sprawdź z czymś takim:

write_attribute(:value, new_value) unless destroyed? 
+0

Działa dobrze dla mnie. Ale jeśli warunek nie powiedzie się, powyższy błąd musi powrócić. jak przezwyciężyć to? \ –

+0

Nie widzę żadnego innego powodu, dlaczego to mogłoby się zdarzyć – apneadiving

+1

Oczywiście istnieje Model.destroyed? metoda, powinienem był wiedzieć. –

Powiązane problemy