Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails : uninitialized constant error on Active Record destroy

I am having an issue when trying to destroy an active record instance.

It involves the following 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

When performing a destroy on a Client instance I am given the following error

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

I am really not sure where this error is coming from. Any help is greatly appreciated!

like image 312
stellard Avatar asked Apr 07 '09 22:04

stellard


2 Answers

It's not finding your Instruction model. Make sure it's in the models directory, appropriately named, extends ActiveRecord::Base, etc.

Also, you should remove the :dependent => :destroy from the belongs_to :client line in the UserClient model, unless you really want deletion of a user_client to result in deletion of the client. It sounds like it should be the other way around, and that's already set up in the Client model.

like image 71
Sarah Mei Avatar answered Sep 21 '22 19:09

Sarah Mei


Also check that the file name corresponds with the class name. In my case I had

Class NameSpace::MyStats

in

namespace/old_stats.rb

and Rails kept on throwing the "uninitialized constant error" until I changed it to

namespace/my_stats.rb
like image 44
Maragues Avatar answered Sep 21 '22 19:09

Maragues