2017-02-17 13 views
0

私のデータベースにカテゴリのリストがあります(簡略化のためにリストされていません)。ActiveRecord many_to_many関連付けのインスタンス化で初期化されていない定数が返される

私のデータベースには犯罪がありますが、その中には複数のカテゴリ(簡略化のために記載されていない妥当性チェック)があります。

class Crime < ActiveRecord::Base 
    belongs_to :team 
    has_many :crime_categories 
    has_many :categories, through: :crime_categories 
end 

これらのモデルは、シードファイルをフォーマットし、私のデータベースに追加し、犯罪のオブジェクトのリストを反復処理されCrimeCategoryモデル

class CrimeCategory < ActiveRecord::Base 
    belongs_to :category 
    belongs_to :crime 
end 

により接合されています。私はいくつかのアプローチを試みました。最初のアプローチは、CrimeCategory行を作成することでした。最後の行は次のエラーをスローします

seed.rb

count = 1 
teamCrimeList.each do |crime| 
    ... 
    categories.each do |cat| 
    ... 
    end 
    category_object = Category.where(name: category) 
    crime_category_objects << category_object 
    CrimeCategory.create(category_id: category_object.id, crime_id: count) 

NameError: uninitialized constant CrimeCategory 

は、私が試した別の戦略は、以下の

seed.rb

teamCrimeList.each do |crime| 
    ... 
    categories.each do |cat| 
    ... 
    end 
    category_object = Category.where(name: category) 
    crime_category_objects << category_object 
end 
date = Date.parse(crime['Date']) 
crime_object = Crime.create(team_id: team.id, date: date, name: crime['Name'], position: crime['Position'], encounter: crime['Encounter'], description: crime['Description'], outcome: crime['Outcome']) 
crime_object.categories = crime_category_objects 

ましたこれはtを返す彼も同じエラー

私も

seed.rb

teamCrimeList.each do |crime| 
    ... 
    categories.each do |cat| 
    ... 
    end 
    category_object = Category.where(name: category) 
    crime_category_objects << category_object 
end 

date = Date.parse(crime['Date']) 
Crime.create(team_id: team.id, categories: crime_category_objects.flatten, date: date, name: crime['Name'], position: crime['Position'], encounter: crime['Encounter'], description: crime['Description'], outcome: crime['Outcome']) 

は、私はいくつかのてこの中で投げ、同じエラーを返すすべてがcrime.categoriesを呼び出してみました。このアプローチを試してみました。

私はスタックオーバーフローを精査しました。この問題に関して私が出会ったほとんどすべてのエントリは、命名エラーと関係していましたが、私が知る限り、命名エラーはありません。

+2

CrimeCategoryモデルはどこに保存されていますか? Railsは、ファイルを自動ロードするための命名規則に依存しています。 CrimeCategoryが 'app/models/crime_category.rb'にない場合、それはオートロードされません。 – Glyoko

+0

'app/models/crime_category.rb'に' _'がありませんでした。代わりに 'crimecategory.rb'がありました。ありがとうございました! –

+0

これは半共通の問題です。 'NameError:初期化されていない定数MyClass'のようなエラーが出たら、あなたのモデル名が宣言されているファイルに対応していないことを意味します。詳細はこちら[説明はこちら](https://gist.github.com/ iangreenleaf/b206d09c587e8fc6399e#model) – Glyoko

答えて

0

@ Glyokoは正しいアイデアを持っていました。私のCrimeCategoryモデルファイルの名前は、app/models/crime_category.rbの代わりにapp/models/crimecategory.rbの代わりに となりました

関連する問題