2009-04-07 4 views
12

J'ai un problème lorsque je tente de détruire une instance d'enregistrement active.Rails: erreur constante non initialisée sur Active Record destroy

Il implique l'AR suivant

class Client < ActiveRecord::Base 
    has_many :phone_numbers, :dependent => :destroy 
    has_many :email_addresses, :dependent => :destroy 
    has_many :user_clients , :dependent => :destroy 
    has_many :users, :through => :user_clients 
end 

class UserClient < ActiveRecord::Base 
belongs_to :user 
belongs_to :client , :dependent => :destroy 
has_many :instructions, :dependent => :destroy 
end 

Lorsque vous effectuez une destroy sur une instance de client me donne l'erreur suivante

@dead_man = Client.find(params[:id]) 
@dead_man.destroy => uninitialized constant UserClient::Instruction 

Je ne suis vraiment pas sûr où cette erreur vient. Toute aide est grandement appréciée!

Répondre

20

Il ne trouve pas votre modèle d'instruction. Assurez-vous qu'il est dans le répertoire des modèles, bien nommé, étend ActiveRecord::Base, etc.

En outre, vous devez retirer le :dependent => :destroy de la ligne belongs_to :client dans le modèle UserClient, sauf si vous voulez vraiment la suppression d'un user_client pour entraîner la suppression de la client. Cela semble être le contraire, et cela est déjà configuré dans le modèle Client.

3

Vérifiez également que le nom du fichier correspond au nom de la classe. Dans mon cas, j'avais

Class NameSpace::MyStats 

dans

namespace/old_stats.rb 

et Rails continué à lancer la "erreur constante uninitialized" jusqu'à ce que je l'ai changé pour

namespace/my_stats.rb 
Questions connexes