Rails:Active Record销毁时未初始化的常量错误

时间:2009-04-07 22:09:29

标签: ruby-on-rails activerecord constants

尝试销毁活动记录实例时遇到问题。

涉及以下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 个答案:

答案 0 :(得分:20)

找不到您的指令型号。确保它位于模型目录中,具有适当的名称,扩展ActiveRecord::Base等等。

此外,您应该从UserClient模型中的:dependent => :destroy行中删除belongs_to :client,除非您确实要删除user_client以导致删除客户端。这听起来应该是相反的,并且已经在客户端模型中设置了。

答案 1 :(得分:4)

同时检查文件名是否与类名相对应。在我的情况下,我有

Class NameSpace::MyStats

namespace/old_stats.rb

并且Rails继续抛出“未初始化的常量错误”,直到我将其更改为

namespace/my_stats.rb