Rails: неинициализированная постоянная ошибка при уничтожении Active Record - PullRequest
12 голосов
/ 08 апреля 2009

У меня проблема при попытке уничтожить экземпляр активной записи.

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

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

Ответы [ 2 ]

20 голосов
/ 08 апреля 2009

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

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

4 голосов
/ 06 сентября 2012

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

Class NameSpace::MyStats

в

namespace/old_stats.rb

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

namespace/my_stats.rb
...