2009-04-07 16 views
12

Ich habe ein Problem beim Versuch, eine aktive Record-Instanz zu zerstören.Schienen: nicht initialisierter konstanter Fehler auf Active Record destroy

Es beinhaltet die folgenden 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 

Wenn ein auf einem Client-Instanz zerstören Durchführung mir gegeben wird folgende Fehler

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

Ich bin wirklich nicht sicher, wo dieser Fehler herkommt. Jede Hilfe wird sehr geschätzt!

Antwort

20

Sie finden Ihr Instruktionsmodell nicht. Stellen Sie sicher, dass es in den Modellen Verzeichnis, passend genannt, erstreckt ActiveRecord::Base usw.

Außerdem sollten Sie die :dependent => :destroy von der belongs_to :client Linie im UserClient Modell entfernen, es sei denn, Sie wirklich das Löschen eines user_client möchte Löschung der führen Klient. Es klingt, als sollte es umgekehrt sein, und das ist bereits im Client-Modell eingerichtet.

3

Überprüfen Sie auch, dass der Dateiname dem Klassennamen entspricht. In meinem Fall hatte ich

Class NameSpace::MyStats 

in

namespace/old_stats.rb 

und Rails gehalten auf die "nicht initialisierte konstanten Fehler" zu werfen, bis ich es zu

geändert
namespace/my_stats.rb 
Verwandte Themen