/ / Devise current_user dziwne zachowanie po aktualizacji do ruby ​​1.9.3 - ruby ​​na szynach, devise, ruby-1.9.3

Opracuj dziwne zachowanie current_user po aktualizacji do Ruby 1.9.3 - ruby-on-rails, devise, ruby-1.9.3

Uaktualniłem poprzez projekt z wersji ree-1.8.7 do 1.9.2p429.

W moim opracowanym modelu mam atrybut o nazwie id_użytkownika_ sylwetka. W widokach, a czasem w moim rubinowym kodzie, dzwonię

current_user.silhouette_user_id

zwraca inną (i ZŁĄ) wartość niż

current_user[:silhouette_user_id]

która zwraca właściwą wartość.

Mimo że ja mógłby wyszukaj i zamień, aby to naprawić. Martwię się, że inne atrybuty będą zachowywać się w ten sam sposób. To jest DUŻY projekt i naprawdę muszę ustalić, dlaczego tak się dzieje.

Wszelkie pomysły będą mile widziane.

Odpowiedzi:

0 dla odpowiedzi № 1

Rozwiązałem ten problem. Podczas aktualizacji próbowałem zaktualizować sposób definiowania nowych metod dla klasy User. Niestety zrobiłem to źle. użyłem

  def define_new_method(key, value)
self.class.send(:define_method, key.to_sym) do
value
end
end

który faktycznie zmienił metody dla użytkownika klasy, a nie instancję, dla której był przeznaczony. Przechodząc do tego:

  def define_new_method(key, value)
define_singleton_method key.to_sym, lambda { value }
end

spowodowało, że nowe metody zostały zdefiniowane tylko dla zamierzonej instancji, a nie dla bieżącej instancji użytkownika.