2011-02-14 4 views

Répondre

144

around_* callbacks sont invoquées avant l'action, lorsque vous voulez invoquer l'action elle-même, vous yield à elle, puis continuer l'exécution. Voilà pourquoi il est appelé around

L'ordre va comme ceci: before, around, after.

Ainsi, un typique around_save ressemblerait à ceci:

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

Cela a du sens. Merci! – gjb

86

Le rappel around_ * est appelé autour de l'action et à l'intérieur du before_ * et * after_ actions. Par exemple:

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

Pour moi, c'est la réponse la plus éclairante. Merci mon ami. –