0

我一直无法找到解决此问题的方法。这与之前提出的许多问题相似,但我相信我的情况有所不同。我目前收到此错误:

NameError in Account#show
uninitialized constant Account::AccountProces

在我看来,它抛出了错误:

<%@account.account_process.each do |process|%>
    Name: <%=process.name%><br/>
<%end%>

现在我已经检查了名称,并且除了 AccountProces 应该是 AccountProcess 之外的所有内容都匹配。我不知道为什么它显示 AccountProces 只有一个 s。我已经在整个目录中搜索了只有 1 s 的东西。我还没有找到任何东西。这是我的模型:

class AccountProcess < ActiveRecord::Base
    attr_accessible :account_id, :name
    validates :account_id, presence: true
    validates :name, presence: true

    belongs_to :account
    def as_json options={}
    {
       id: id,
       name: name,
       open_count: open_count,
       created_at: created_at,
       update_at: updated_at

    }
    end
end

这是我的迁移:

class CreateAccountProcesses < ActiveRecord::Migration
   def change
      create_table :account_processes do |t|
         t.references :account

         t.string :name, :null => false, :default => ""

         t.timestamps
      end
   end
end

这是我的简化帐户模型:

class Account < ActiveRecord::Base
   attr_accessible :computer_id, :allotted_time, :domain, :tracking, :used_time, :username, :account_process_attributes

   validates :username, :presence => true
   validates :computer_id, :presence => true

   has_many :account_process, :dependent => :destroy

   accepts_nested_attributes_for :account_process

   def as_json options={}
   {
     id: id,
     computer_id: computer_id,
     domain: domain,
     username: username,
     tracking: tracking,

     account_process_attributes: account_process,

     created_at: created_at,
     update_at: updated_at
   }
   end
end

这应该是我能想到的所有会导致这个问题的东西。我还有其他与帐户有关的属性,例如历史记录和程序。它们与帐户流程几乎相同,并且不会引发任何错误。它在我的视图中以及当我尝试使用我的 REST API 保存到数据库时都会引发此错误。

4

1 回答 1

0

尝试改变

class Account < ActiveRecord::Base
...
  has_many :account_process, :dependent => :destroy
...
end

class Account < ActiveRecord::Base
...
  has_many :account_processes, :dependent => :destroy
...
end

并在您的视图中更改此关联。

中的关联名称has_many应始终是复数形式,ActiveRecord 将通过单数关联名称来确定类。

如果它无法正确生成类名,您可以执行以下操作:

has_many :account_processes, :class_name => "AccountProcess"
于 2013-02-19T23:11:57.383 回答