Ruby on Rails 3: après la méthode destroy de détruire un objet si il n'y a plus d'objets liés dans le système?

J'ai un petit problème, j'ai les 2 modèles:

class CriticalProcess < ActiveRecord::Base



  has_many :authorizations, :dependent => :destroy
  has_many :roles, :through => :authorizations
  after_destroy :check_roles

  def check roles
     cp_roles = self.roles
     cp_roles.each do |role|
       if role.critical_processes.size == 0
          role.destroy
       end
     end
  end
end

et

class Role < ActiveRecord::Base

  has_many :authorizations
  has_many :critical_processes, :through => :authorizations

end

Donc 1 rôle peut appartenir à de nombreux processus essentiels, est-il possible que je peux le faire que si TOUS les processus critiques que le rôle appartenait devaient être détruits, puis pour qu'il être détruit? J'ai besoin de cela parce que si tous les CP (Processus critiques) que les rôles ont une relation avec devaient être détruits alors le rôle devrait également être détruites, car il n'est plus nécessaire.

Mise à JOUR

J'ai maintenant créé un after_destroy méthode qui devrait supprimer les rôles, mais cela ne semble pas être de travail, pour une raison quelconque après le débogage en utilisant les journaux de son pas de boucle dans le tableau pour une raison quelconque?

pourquoi est-ce?

Grâce

Peut-être juste la force brute avec un before_destroy filtre dans CriticalProcess. Cravate qu'à une méthode qui vérifie self.roles pour tous les rôles dont critical_processes liste contient uniquement les self (le processus critique qui est sur le point d'être détruit.
salut @jdl, comment pourrais-je aller sur le faire? pouvez-vous me montrer ce que la méthode ressemble à s'il vous plaît?

OriginalL'auteur Mo. | 2011-04-05