所以我认为我需要帮助我正在做的事情。我有两个模型(很多但是为了这里的目的)。一个是提供者。每个提供商都可以有一个名称。虽然名称只是一个列表,但它可以出现在许多不同的提供商中,因此它不是一对一的。我的模型如下:
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的新手,我是否必须创建迁移才能正确更新数据库?
答案 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