has_and_belongs_to_many UndefinedTable:错误

时间:2015-05-26 21:24:30

标签: ruby-on-rails ruby join associations has-and-belongs-to-many

我有两个模型,ClinicianPatientclinician has_many: patientspatient belongs_to :clinician。联接表shared_patients旨在存储patientsclinicians之间的其他关联,因为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

使用这些我想显示clinicianspatient共享的列表。

现在我收到一个错误:

  

PG :: UndefinedTable:错误:关系“shared_pa​​tients”不存在   第1行:插入“shared_pa​​tients”(“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

有关解决此错误或构建模型以获得我想要的关联的任何建议都会很棒。感谢

1 个答案:

答案 0 :(得分:0)

当你有一个has_and_belongs_to_many时,你就不能拥有一个连接表的类,即。你不能拥有SharedPatient,并且在你完成之后就不能尝试使用它。