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