Rails : uninitialized constant error on Active Record destroy

时光总嘲笑我的痴心妄想 提交于 2019-12-09 05:15:25

问题


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!


回答1:


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.




回答2:


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


来源:https://stackoverflow.com/questions/727801/rails-uninitialized-constant-error-on-active-record-destroy

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!