ruby-on-rails – 对于名称与复数相同的模型,`has_many,:throug
我正在构建一个应用程序来为星球大战RPG生成角色.我添加了Species模型.物种是单数,因为它是复数,这让我循环.我可以通过使用species_index_path让应用程序在应用程序中正常工作,但出于某种原因,has_many:characteristics,:through => :species_characteristics不是一个方向.
例如,我有两个模型在控制台中正确播种(和工作):特征和物种.特征设置方式如下: 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 它们之间的模型对每个模型都有一个belongs_to. 如果我从控制台调用Characteristics.first.species,我会得到与该特征相关的物种列表. 但是,如果我调用Species.first.characteristics,我会得到以下结果: NameError: uninitialized constant Species::Characteristics 我期待增加一个新的变形,或者某种方式,但我什么都没有.有没有人有更好的方法将模型重命名为Race? TLDR:has_many关系由于未初始化的常量错误而不能仅在一个方向上起作用,可能是由于拐点问题.除了重命名模型之外,还有什么方法可以修复它吗? 解决方法
经过数小时的修补,我发现了问题.我删除了对inflections.rb文件所做的任何额外更改,所以它看起来像这样:
ActiveSupport::Inflector.inflections(:en) do |inflect| inflect.uncountable %w( species ) end 然后我仔细检查了所有模型,以确保语法正确,关系有意义,以及那种性质的东西.事实证明,我使用的是has_many:species,:through => :species_characteristics应该是has_many:种类,通过:: species_characteristics.一旦我在Species和Characteristics模型中修复了这些问题并重新加载!在控制台中,一切都开始工作了. 特色模型: class Characteristic < ActiveRecord::Base has_many :species_characteristics has_many :species,through: :species_characteristics end 物种型号: class Species < ActiveRecord::Base has_many :species_characteristics has_many :characteristics,through: :species_characteristics end 物种特征模型: class SpeciesCharacteristic < ActiveRecord::Base belongs_to :characteristic belongs_to :species end 因此结束了这个问题的恐怖统治. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |