0

私はこの問題の解決策を見つけることができませんでした。これまでに聞かれた多くの質問に似ていますが、私の場合は何かが違うと思います。現在、次のエラーが発生しています。

NameError in Account#show
uninitialized constant Account::AccountProces

私の見解ではエラーがスローされています:

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

これで名前を確認しましたが、AccountProcesがAccountProcessである必要があることを除いて、すべてが一致しています。AccountProcesにが1つしかないことを示している理由がわかりません。ディレクトリ全体で1秒しかないものを検索しました。私はまだ何も見つけていません。これが私のモデルです:

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

それがこの問題を引き起こすと私が考えることができるすべてであるはずです。履歴やプログラムなど、アカウントに関連する他の属性があります。これらはアカウントプロセスとほぼ同じであり、エラーをスローしません。ビューと、RESTAPIを使用してデータベースに保存しようとしたときにこのエラーがスローされます。

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 に答える