Rails 协会,我想要一些东西,但另一个模型应该不在乎

Rails association, I want something but the other model shouldn't care

所以我想我需要帮助来处理我正在做的事情。我有两个模型(很多,但出于此处的目的)。一个是提供者。每个提供者都可以有一个名称。尽管名称只是一个列表,但它可以出现在许多不同的提供商中,因此它不是一对一的。我的模型如下:

Provider.rb

class Provider < ActiveRecord::Base
 has_and_belongs_to_many :groups
 has_one :designation
 has_one :specialty
end

Designation.rb

class Designation < ActiveRecord::Base

end

我得到的错误是这样的: SQLite3::SQLException: 没有这样的列: designations.provider_id: SELECT "designations".* FROM "designations" WHERE "designations"."provider_id" = ?限制 1

这告诉我我的关联是关闭的,因为名称不应该有 provider_id,如果有的话,提供者应该有 designation_id。

我是否放弃 has_one 并仅将 has_many 放入名称中?

如果我这样做,我是 rails 的新手,我是否必须创建迁移以便正确更新数据库?

尝试使用

models/provider.rb

belongs_to :designation

然后在

models/designation.rb

has_many :providers

可能感觉有点奇怪,但 belongs_to 只是让您知道 id 列需要进入哪个模型。在本例中是提供商模型,因此您需要:

rails g migration add_designation_id_to_provider designation_id:integer