2009-04-07 9 views
12

Tengo un problema al intentar destruir una instancia de registro activo.Rieles: error constante no inicializado en Active Record destroy

comprende los siguientes puntos AR

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 

Al realizar una destruyen en una instancia de cliente me da el siguiente error

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

estoy realmente no sabe dónde este error está viniendo. ¡Cualquier ayuda es muy apreciada!

Respuesta

20

No está encontrando su modelo de Instrucción. Asegúrese de que sea en el directorio de modelos, apropiado nombre, se extiende ActiveRecord::Base, etc.

Además, debe quitar el :dependent => :destroy desde la línea de belongs_to :client en el modelo UserClient, a menos que realmente desea la eliminación de un user_client para dar lugar a la supresión de la cliente. Parece que debería ser al revés, y eso ya está configurado en el modelo de cliente.

3

También verifique que el nombre del archivo corresponda con el nombre de la clase. En mi caso tuve

Class NameSpace::MyStats 

en

namespace/old_stats.rb 

y rieles seguía lanzando el "error constante sin inicializar" hasta que lo cambié a

namespace/my_stats.rb 
Cuestiones relacionadas