Ordre d'exécution des callbacks dans Activ eRecord

Bonjour

Je travail actuellement sur un modele comme celui-ci

class Category < AR::Base
has_many :assets, :dependent => :nullify
end

class Asset < AR::Base
belongs_to :category
end

Je souhaite executer un traitement des que la categorie d’un asset a
ete modifie
J’utilise pour cela un callback dans le modele Category ainsi :

class Category < AR::Base
has_many :assets, :dependent => :nullify

before_save :mark_assets_as_changed
before_destroy :mark_assets_as_changed

protected

def mark_assets_as_changed
    Asset.update_all({:changed => true}, {category_id => self.id})
end

end

le callback before_destroy ne fonctionne pas car l’association est
rompu par :dependent => :nullify avant l’execution du callback.

Existe-il un moyen simple d’ajouter de nouveaux callback a AR:Base
Sinon est-ce que
before_destroy :callback_1, :callback_2 garanti l’execution
de :callback_1 avant :callback_2 ?

Merci

Mourad

Bonjour Mourad,

Existe-il un moyen simple d’ajouter de nouveaux callback a AR:Base

Techniquement, rien n’est impossible, mais à quel moment du cycle de
vie de l’objet souhaiterais-tu intervenir ?

Sinon est-ce que
before_destroy :callback_1, :callback_2 garanti l’execution
de :callback_1 avant :callback_2 ?

Oui, en ce cas, callback_2 sera toujours exécuté après callback_1,
sauf si callback_1 renvoie false, auquel cas la chaîne est rompue.

Guillaume “Zifro” DESRAT
Président de l’association Ruby France
http://www.rubyfrance.org/

Techniquement, rien n’est impossible, mais à quel moment du cycle de
vie de l’objet souhaiterais-tu intervenir ?

Merci pour cette réponse si rapide !
J’ai besoin inserer un callback juste avant la destruction des
associations par :dependent => nullify (ou destroy)
et ce la me semble plus rigoureux que de maintenir les associations
soi même en utilisant des callbacks.

Cependant comme c’est pour une demande urgente, je vais remplacer les
clauses “dependent” par des callbacks

Merci

Mourad

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs