小编Ser*_*ean的帖子

对于名称与复数相同的模型,`has_many,:through`不在一个方向上工作

我正在构建一个应用程序来为星球大战RPG生成角色.我添加了Species模型.Species是复数的单数,这是一个循环.我可以通过使用在应用程序中使路由正常工作species_index_path,但由于某种原因,has_many :characteristics, :through => :species_characteristics它不是在一个方向上工作.

例如,我有两个模型在控制台中正确播种(和工作):CharacteristicsSpecies.Characteristics按以下方式设置:

class Characteristic < ActiveRecord::Base
    has_many :species_characteristics
    has_many :species, :through => :species_characteristics
    has_many :skills
end
Run Code Online (Sandbox Code Playgroud)

Species 按以下方式设置:

class Species < ActiveRecord::Base
    has_many :species_characteristics
    has_many :characteristics, :through => :species_characteristics
end
Run Code Online (Sandbox Code Playgroud)

他们之间的模型只有一个belongs_to.

如果我Characteristic.first.species从控制台打电话,我会得到与该特征相关的物种清单.

Species.first.characteristics但是,如果我打电话,我会得到以下信息:

NameError: uninitialized constant Species::Characteristics
Run Code Online (Sandbox Code Playgroud)

我期待增加一个新的变形,或者某种方式,但我什么都没有.有没有人有更好的方法将模型重命名为Race?


TLDR:has_many由于未初始化的常量错误,关系不能仅在一个方向上起作用,可能是由于拐点问题.除了重命名模型之外,还有什么方法可以修复它吗?

ruby initialization ruby-on-rails inflection ruby-on-rails-4

5
推荐指数
1
解决办法
1068
查看次数