我有两个模型,Clinician
和Patient
。 clinician
has_many: patients
和patient
belongs_to :clinician
。联接表shared_patients
旨在存储patients
和clinicians
之间的其他关联,因为patient
可以由除clinicians
以外的许多其他belongs_to
共享{1}}。这是使用has_and_belongs_to_many
关系完成的。
见模特:
class Clinician < ActiveRecord::Base
has_many :patients
has_and_belongs_to_many :shared_patients, join_table: 'shared_patients', class_name: 'Patient'
end
class Patient < ActiveRecord::Base
belongs_to :clinician
has_and_belongs_to_many :shared_clinicians, join_table: 'shared_patients', class_name: 'Clinician'
end
这就是我的表在db模式中的设置方式:
create_table "clinicians", force: true do |t|
t.string "first_name"
t.string "last_name"
t.integer "user_id"
end
create_table "patients", force: true do |t|
t.integer "clinician_id"
t.string "first_name"
t.string "last_name"
t.integer "user_id"
end
create_table "shared_patients", id: false, force: true do |t|
t.integer "clinician_id"
t.integer "patient_id"
end
使用这些我想显示clinicians
与patient
共享的列表。
现在我收到一个错误:
PG :: UndefinedTable:错误:关系“shared_patients”不存在 第1行:插入“shared_patients”(“clinician_id”,“id”,“patien ......
如果我尝试在控制台中创建关系:
@shared = SharedPatient.new(“id”=&gt; 1,“clinician_id”=&gt; 2526,“patient_id”=&gt; 1307) =&GT; #1,“clinician_id”=&gt; 2526,“patient_id”=&gt; 1307}&gt;
@ shared.save
有关解决此错误或构建模型以获得我想要的关联的任何建议都会很棒。感谢
答案 0 :(得分:0)
当你有一个has_and_belongs_to_many
时,你就不能拥有一个连接表的类,即。你不能拥有SharedPatient
,并且在你完成之后就不能尝试使用它。