/ / Desenvolva um comportamento estranho do current_user após a atualização para o ruby ​​1.9.3 - ruby-on-rails, devise, ruby-1.9.3

Devise o comportamento estranho current_user após atualizar para o ruby ​​1.9.3 - ruby-on-rails, legenda, ruby-1.9.3

Eu atualizei por projeto de ree-1.8.7 para 1.9.2p429.

Eu tenho um atributo em meu modelo de dispositivo chamado silhouette_user_id. Em visualizações e, ocasionalmente, em meu código ruby, chamando

current_user.silhouette_user_id

retorna um valor diferente (e ERRADO) do que

current_user[:silhouette_user_id]

que retorna o valor correto.

Embora eu poderia pesquise e substitua para corrigir isso, estou preocupado que outros atributos se comportem da mesma maneira. Este é um projeto GRANDE e eu realmente preciso determinar por que isso está acontecendo.

Qualquer idéia seria muito apreciada.

Respostas:

0 para resposta № 1

Eu resolvi esse problema. Durante a atualização, tentei atualizar a forma como estava definindo novos métodos para a classe User. Infelizmente, eu fiz errado. eu usei

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

que na verdade mudou os métodos para o CLASS User em vez da instância para a qual foi planejado. Mudando para este:

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

resultou nos novos métodos sendo definidos apenas para a instância pretendida e não para a instância current_user.