2009-04-07 16 views
12

Sto riscontrando un problema durante il tentativo di distruggere un'istanza di record attiva.Rails: errore costante non inizializzato su Active Record destroy

Esso prevede le seguenti 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 

Quando si esegue un distruggere in un'istanza client mi è riconosciuto il seguente errore

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

Sono veramente non so dove questo errore proviene. Qualsiasi aiuto è molto apprezzato!

risposta

20

Non trova il tuo modello di istruzione. Assicurarsi che sia nella directory di modelli, nome appropriato, si estende ActiveRecord::Base, ecc

Inoltre, è necessario rimuovere il :dependent => :destroy dalla linea belongs_to :client nel modello UserClient, a meno che non si vuole veramente la cancellazione di un user_client di provocare la cancellazione della cliente. Sembra che dovrebbe essere il contrario, e questo è già impostato nel modello Client.

3

Verificare inoltre che il nome del file corrisponda al nome della classe. Nel mio caso ho avuto

Class NameSpace::MyStats 

in

namespace/old_stats.rb 

e Rails continuato a lanciare l ' "errore costante non inizializzata" fino a quando ho cambiato in

namespace/my_stats.rb 
Problemi correlati