J'utilise un after_commit dans mon application.
Je voudrais qu'il se déclenche uniquement lorsqu'un champ particulier est mis à jour dans mon modèle. Quelqu'un sait-il comment faire ?
J'utilise un after_commit dans mon application.
Je voudrais qu'il se déclenche uniquement lorsqu'un champ particulier est mis à jour dans mon modèle. Quelqu'un sait-il comment faire ?
Il semble que vous souhaitiez quelque chose comme un rappel conditionnel . Si vous aviez affiché un code, j'aurais pu vous orienter dans la bonne direction, mais je pense que vous voudriez utiliser quelque chose comme ceci :
after_commit :callback,
:if => Proc.new { |record| record.field_modified? }
Je ne sais pas si je vais devoir écrire une méthode pour vérifier la valeur du champ. En fait, j'essaie de recalculer et d'enregistrer la note d'un utilisateur en fonction de toutes les notes qu'il a attribuées à ses rendez-vous. Je voudrais savoir si le champ rating a été mis à jour. Voici une partie du code avec lequel je travaille classe Appointment < ActiveRecord::Base ... after_commit :update_user_and_product_ratings def update_user_and_product_ratings self.user.update_rating self.product.update_rating end
Utiliser la pierre précieuse ArTransactionChanges . previous_changes
ne fonctionne pas pour moi dans Rails 4.0.x
Utilisation :
class User < ActiveRecord::Base
include ArTransactionChanges
after_commit :print_transaction_changes
def print_transaction_changes
transaction_changed_attributes.each do |name, old_value|
puts "attribute #{name}: #{old_value.inspect} -> #{send(name).inspect}"
end
end
end
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.