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 № 1Eu 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.