创建模型时错误的轨道复数

2 ruby ruby-on-rails ruby-on-rails-4

我有rails复数的问题.

我有一个名为CompanySkill(代表公司拥有的技能)的模型.在创建模型轨道时使用companies_skill 而不是将其复数化company_skills,因此当我需要设置has_many :company_skills关联轨道时,不使用该模型.

这个问题的正确解决方案是什么?我想的是使用变形,但我不知道它是否是正确的解决方案和/或有更好的解决方案.

我正在从控制台生成模型:

rails generate model CompanySkill
  invoke  active_record
  create    db/migrate/20160511111048_create_companies_skill.rb
  create    app/models/company_skill.rb
  invoke    test_unit
  create      test/models/company_skill_test.rb
  create      test/fixtures/companies_skill.yml
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 7

你有两个选择.

首先,您可以覆盖此名称的变形器.在config/initializers/inflections.rb添加以下内容:

ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.irregular 'company_skill', 'company_skills'
end
Run Code Online (Sandbox Code Playgroud)

或者,也许是最好的解决方案,您可以在关联上指定类名.在您的模型中使用以下内容:

has_many :company_skills, class_name: 'CompanySkill'
Run Code Online (Sandbox Code Playgroud)

虽然,正如其他人所说的那样,这些解决方案都不应该被要求,因为默认情况下company_skill应该由Rails复数company_skills.