2011-02-14 10 views

Respuesta

144

around_* devoluciones de llamada se invocan antes la acción, a continuación, cuando se desea invocar la acción en sí misma, que yield a ella, y luego continuar la ejecución. Es por eso que se llama around

La orden dice así: before, around, after.

Así, una típica around_save se vería así:

def around_save 
    #do something... 
    yield #saves 
    #do something else... 
end 
+4

Eso tiene sentido. ¡Gracias! – gjb

86

El around_ * devolución de llamada en torno a la acción y en el interior del before_ * y * after_ acciones. Por ejemplo:

class User 
    def before_save 
    puts 'before save' 
    end 

    def after_save 
    puts 'after_save' 
    end 

    def around_save 
    puts 'in around save' 
    yield # User saved 
    puts 'out around save' 
    end 
end 

User.save 
    before save 
    in around save 
    out around save 
    after_save 
=> true 
+9

Para mí, esta es la respuesta más iluminadora. Gracias amigo. –

Cuestiones relacionadas