【发布时间】:2013-08-01 12:43:30
【问题描述】:
我正在构建一个应用程序来为星球大战 RPG 生成一个角色。我添加了Species 模型。 Species 单数和复数相同,这让我陷入了循环。通过使用species_index_path,我可以让路线在应用程序中正常工作,但由于某种原因,has_many :characteristics, :through => :species_characteristics 无法在一个方向上工作。
例如,我有两个在控制台中正确播种(并且可以工作)的模型:Characteristics 和 Species。 Characteristics 的设置方式如下:
class Characteristic < ActiveRecord::Base
has_many :species_characteristics
has_many :species, :through => :species_characteristics
has_many :skills
end
Species 的设置方式如下:
class Species < ActiveRecord::Base
has_many :species_characteristics
has_many :characteristics, :through => :species_characteristics
end
他们之间的模型只有一个belongs_to。
如果我从控制台调用Characteristic.first.species,我会得到与该特征相关的物种列表。
但是,如果我调用 Species.first.characteristics,我会得到以下信息:
NameError: uninitialized constant Species::Characteristics
我正在考虑添加一个新的变形,或者以某种方式解决这个问题,但我什么也没想到。除了将模型重命名为 Race 之类的名称之外,还有没有更好的方法?
TLDR:
has_many 关系由于未初始化的常量错误(可能是由于拐点问题)而仅在一个方向上不起作用。除了重命名模型之外,还有什么方法可以解决它?
【问题讨论】:
-
这对我来说似乎是一个错误;如果还没有,请考虑向Rails issues 报告
-
@sawa,这就是我的想法……但后来我尝试了“characteristics”.singularize.pluralize,它奏效了。
-
@sawa 我尝试将
inflect.plural 'species', 'species'和inflect.uncountable %w( species )添加到变形文件中,但似乎都不起作用。因此,即使它与问题有关,但我认为它并不完全相同。我很感激你把那个链接给我看看。
标签: ruby-on-rails ruby ruby-on-rails-4 initialization inflection