私のデータベースにカテゴリのリストがあります(簡略化のためにリストされていません)。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
を呼び出してみました。このアプローチを試してみました。
私はスタックオーバーフローを精査しました。この問題に関して私が出会ったほとんどすべてのエントリは、命名エラーと関係していましたが、私が知る限り、命名エラーはありません。
CrimeCategoryモデルはどこに保存されていますか? Railsは、ファイルを自動ロードするための命名規則に依存しています。 CrimeCategoryが 'app/models/crime_category.rb'にない場合、それはオートロードされません。 – Glyoko
'app/models/crime_category.rb'に' _'がありませんでした。代わりに 'crimecategory.rb'がありました。ありがとうございました! –
これは半共通の問題です。 'NameError:初期化されていない定数MyClass'のようなエラーが出たら、あなたのモデル名が宣言されているファイルに対応していないことを意味します。詳細はこちら[説明はこちら](https://gist.github.com/ iangreenleaf/b206d09c587e8fc6399e#model) – Glyoko