Rails: Comment exécuter before_update uniquement pour un attribut modifié?
Dans mon modèle Shop
je suis d'économie d'url de l'image dans logo_ori
et l'utiliser pour faire des miniatures à l'aide de before_update
.
# shop.rb
before_update :run_blitline_job
private
def run_blitline_job
# uses logo_ori to make thumbnails
end
Cependant, j'ai découvert que quand je suis en sauver d'autres attributs (par exemple: montage d'une boutique de profil dans un formulaire), il gère également before_update
. Comment puis-je limiter le champ de son exécution lorsque seulement logo_ori
est sauvé?
J'ai essayé ceci :
before_update :run_blitline_job, :if => :logo_ori?
mais il fonctionne encore before_update
si j'ai déjà logo_ori
enregistré précédemment.
source d'informationauteur i.am.noob
Vous devez vous connecter pour publier un commentaire.
Cela va lancer le rappel à chaque fois que la
logo_ori
des modifications d'attributs. Vous pouvez également utiliser des chaînes de mettre en œuvre plusieurs conditions:Vous êtes proche, vous voulez quelque chose comme ceci:
sources:
http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
http://api.rubyonrails.org/classes/ActiveModel/Dirty.html
c'est simple, vous pouvez utiliser Activerecord::Sale (la caisse de la documentation), il est disponible dans tous les modèles de rails 3