2009-04-07 4 views
12

У меня возникла проблема при попытке уничтожить активный экземпляр записи.Rails: неинициализированная постоянная ошибка в Active Record destroy

Она включает в себя следующие 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 

При выполнении уничтожить на экземпляре клиента я дал следующую ошибку

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

Я действительно не знаю, где эта ошибка происходит из. Любая помощь очень ценится!

ответ

20

Это не находит вашу модель обучения. Убедитесь, что он находится в каталоге моделей, с соответствующим названием, расширяет ActiveRecord::Base и т.д.

Кроме того, вы должны удалить :dependent => :destroy из belongs_to :client линии в модели UserClient, если вы действительно хотите делецию user_client привести к удалению из клиент. Похоже, что это должно быть наоборот, и это уже настроено в модели клиента.

3

Также убедитесь, что имя файла соответствует имени класса. В моем случае я имел

Class NameSpace::MyStats 

в

namespace/old_stats.rb 

и Rails продолжал бросать «неинициализированный постоянную ошибку», пока я не изменил его

namespace/my_stats.rb