2011-01-17 7 views
10

Cómo cambiar el método siguiente para utilizar tap para detener las advertencias comoDeprecation ADVERTENCIA: Objeto # Volviendo ha sido desaprobado en favor del objeto # grifo

DEPRECATION WARNING: Object#returning has been deprecated in favor of Object#tap. (called from full_messages at /Users/millisami/apps/pandahr/config/initializers/fix_active_model_full_message.rb:17) :

ActiveModel::Errors.class_eval do 
    # Remove complicated logic 
    def full_messages 
    returning full_messages = [] do 
     self.each_key do |attr| 
     self[attr].each do |msg| 
      full_messages << msg if msg 
     end 
     end 
    end 
    end 
end 

Respuesta

14

En general, puede reemplazar el returning línea con esta llamada a tap:

[].tap do |full_messages| 

Sin embargo, su método parece que es equivalente a values.compact, por lo que puede reemplazar su código con eso.

3

Este mensaje de advertencia puede aparecer si actualiza las aplicaciones anteriores de Rails 2. Desde el Rails Version 2.3.9, la función Núm. De regreso del Núcleo ha sido reemplazada por Objeto # tap que es nativo de Ruby 1.8.7. Desafortunadamente, este error a menudo es causado por plugins y gemas más antiguos. Para mí, ayudó a actualizar la versión de haml de 2.0.x a 3.0.21, y la versión de will_paginate de 2.2.x a 2.3.15.

Cuestiones relacionadas