Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在模型中,名称的单数与复数相同,`has_many,:通过`isn';我不能朝一个方向工作_Ruby On Rails_Ruby_Ruby On Rails 4_Initialization_Inflection - Fatal编程技术网

Ruby on rails 在模型中,名称的单数与复数相同,`has_many,:通过`isn';我不能朝一个方向工作

Ruby on rails 在模型中,名称的单数与复数相同,`has_many,:通过`isn';我不能朝一个方向工作,ruby-on-rails,ruby,ruby-on-rails-4,initialization,inflection,Ruby On Rails,Ruby,Ruby On Rails 4,Initialization,Inflection,我正在构建一个应用程序,为《星球大战》RPG生成一个角色。我添加了物种模型Species的单数和复数是一样的,这让我很困惑。通过使用物种索引路径,我可以在应用程序中获得运行良好的路径,但由于某种原因,具有许多:特征,:通过=>:物种特征不是单向运行的 例如,我有两个模型在控制台中被正确地植入(并工作):特征和种类特性按以下方式设置: class Characteristic < ActiveRecord::Base has_many :species_characteristics

我正在构建一个应用程序,为《星球大战》RPG生成一个角色。我添加了
物种
模型
Species
的单数和复数是一样的,这让我很困惑。通过使用
物种索引路径
,我可以在应用程序中获得运行良好的路径,但由于某种原因,
具有许多:特征,:通过=>:物种特征
不是单向运行的

例如,我有两个模型在控制台中被正确地植入(并工作):
特征
种类
<代码>特性按以下方式设置:

class Characteristic < ActiveRecord::Base
    has_many :species_characteristics
    has_many :species, :through => :species_characteristics
    has_many :skills
end
class Species < ActiveRecord::Base
    has_many :species_characteristics
    has_many :characteristics, :through => :species_characteristics
end
它们之间的模型只有一个
属于它们中的每一个

如果我从控制台调用
Characteristic.first.species
,我会得到与该特征相关的物种列表

但是,如果我调用
物种.第一.characteristics
,我会得到以下结果:

NameError: uninitialized constant Species::Characteristics
我希望增加一个新的拐点,或者用某种方法来解决这个问题,但我什么也没想到。除了将模型重命名为Race之类的名称外,还有其他更好的方法吗



TLDR:
有许多关系由于未初始化的常量错误(可能是由于拐点问题)而不能仅在一个方向上工作。除了重命名模型,还有什么办法可以修复它吗?

经过几个小时的修补,我发现了这个问题。我删除了对拐点.rb文件所做的任何额外更改,使其看起来像这样:

ActiveSupport::Inflector.inflections(:en) do |inflect|
    inflect.uncountable %w( species )
end
然后我仔细检查了所有模型,以确保语法正确,关系有意义,以及类似的性质。事实证明,我使用的是
has\u many:species,:through=>:species\u characteristics
,而它应该是
has\u many:species,through::species\u characteristics
。一旦我修复了物种和特征模型中的那些问题,并重新加载了


特征模型:

class Characteristic < ActiveRecord::Base
    has_many :species_characteristics
    has_many :species, through: :species_characteristics
end
class SpeciesCharacteristic < ActiveRecord::Base
    belongs_to :characteristic
    belongs_to :species
end
类特征
物种模型:

class Species < ActiveRecord::Base
    has_many :species_characteristics
    has_many :characteristics, through: :species_characteristics
end
类物种
物种特征模型:

class Characteristic < ActiveRecord::Base
    has_many :species_characteristics
    has_many :species, through: :species_characteristics
end
class SpeciesCharacteristic < ActiveRecord::Base
    belongs_to :characteristic
    belongs_to :species
end
class SpeciesCharacteristic

这就结束了这一期的恐怖统治。

可能与它有关,但对我来说,它似乎是一个bug;考虑一下,如果它还不在这里的话:“萨瓦,这就是我所想的…但后来我尝试了“特征”。singularize.pluralize成功了。@sawa我尝试了将
influct.plural“species”、“species”和
influct.uncountable%w(species)
添加到influctions文件中,这两种方法似乎都不起作用。因此,即使它与这个问题有关,我认为它并不完全相同。不过,我很感激你把这个链接起来让我看看。