Je joue un peu avec les nouveaux Rails 3 API et j'ai une question concernant la nouvelle méthode run_callbacks(kind, *args, &block)Rails 3 run_callbacks méthode
Dans le code suivant:
class User < ActiveRecord::Base
before_save :say_hi
after_save :say_bye
private
def say_hi; puts "hi"; end
def say_bye; puts "bye"; end
end
Je peux appeler explicitement les callbacks sur réaliserez en cours d'exécution:
> u.run_callbacks(:save)
hi
bye
=> true
Mais ma question est, comment puis-je seulement exécuter le before_save ou after_save rappel?
Révision du code run_callbacks(kind, *args, &block)
:
# File activesupport/lib/active_support/callbacks.rb, line 92
def run_callbacks(kind, *args, &block)
send("_run_#{kind}_callbacks", *args, &block)
end
Je ne sais pas comment construire *args
seulement appeler avant ou après callbacks, j'ai essayé quelque chose comme u.run_callbacks(:before_save)
(me donne erreur de méthode non définie) et u.run_callbacks(:save, :before)
exécute tous les enregistrer rappels (avant et après).
Oui, il semble que nous ne sommes pas en mesure d'exécuter les rappels d'enregistrement 'before' ou' after' individuellement :(, au moins d'une manière plus propre: – jpemberthy
@jpemberthy - si vous mettez à jour votre question avec une utilisation spécifique cas, peut-être nous pouvons trouver une solution de contournement qui suffira jusqu'à ce que le bug est adressé? – Brian
merci, mais ce n'est pas nécessaire, je jouais juste avec la nouvelle API (merci dieu) Ce n'est pas une chose à migrer de 2.3.x ou quelque chose Je travaille sur: P – jpemberthy