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

问题描述 投票:0回答:3

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

涉及到以下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

我真的不确定这个错误来自哪里。非常感谢任何帮助!

ruby-on-rails activerecord constants
3个回答
20
投票

它没有找到您的指令模型。确保它位于 models 目录中,并适当命名、扩展

ActiveRecord::Base
等。

此外,您应该从 UserClient 模型中的

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


4
投票

还要检查文件名是否与类名相对应。就我而言,我有

Class NameSpace::MyStats

namespace/old_stats.rb

Rails 不断抛出“未初始化的常量错误”,直到我将其更改为

namespace/my_stats.rb

0
投票

就我而言,由于复数,它没有找到正确的类名。因此,我在关联中明确指定了类名。

对于你来说,它看起来像:

has_many :instructions, class_name: "Instruction", :dependent => :destroy
© www.soinside.com 2019 - 2024. All rights reserved.