0
我在我的数据库(验证未列出简洁)类别列表。ActiveRecord的MANY_TO_MANY协会实例返回未初始化的常量
class Category < ActiveRecord::Base
has_many :crimes_categories
has_many :crimes, through: :crime_categories
end
我播我的数据库的罪行,其中一些具有多个类别(未列出简洁验证)。
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是不是在'应用程序/模型/ crime_category.rb'那么它不会自动载入。 – Glyoko
我只是缺少在我的'应用程序/模型/ crime_category.rb'一个'_'我代替了'crimecategory.rb'。谢谢! –
这是一个半共同的问题。每当你遇到像'NameError:uninitialized constant MyClass'这样的错误时,通常意味着你的模型名称与它们声明的文件不一致。更深入的解释[https://gist.github.com/ iangreenleaf/b206d09c587e8fc6399e#模型) – Glyoko