Rails协会,我想要的东西,但另一个模型不应该关心

时间:2015-05-22 20:19:14

标签: ruby ruby-on-rails-4 activerecord model-associations

所以我认为我需要帮助我正在做的事情。我有两个模型(很多但是为了这里的目的)。一个是提供者。每个提供商都可以有一个名称。虽然名称只是一个列表,但它可以出现在许多不同的提供商中,因此它不是一对一的。我的模型如下:

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&#34;名称&#34;。* FROM&#34;名称&#34;在哪里&#34;名称&#34;。&#34; provider_id&#34; =?限制1

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

我是否抛弃了has_one并将has_many放入了指定中?

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

1 个答案:

答案 0 :(得分:1)

尝试使用

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