Activerecord 活动记录单表继承联接表

Activerecord 活动记录单表继承联接表,activerecord,jointable,sti,Activerecord,Jointable,Sti,我有一个用户表和一个课程表。在用户模型之上,我使用STI创建了一个教师和一个学生模型 老师有很多课程,但学生有很多课程,属于很多课程 一门课程属于老师,有很多学生 我试图访问一个学生的课程,但AR正在寻找一个名为courses\u users的联接表,而我的名为courses\u students Student.find(100).courses Student Load (0.8ms) SELECT "users".* FROM "users" WHERE "users"."typ

我有一个用户表和一个课程表。在用户模型之上,我使用STI创建了一个教师和一个学生模型

老师有很多课程,但学生有很多课程,属于很多课程

一门课程属于老师,有很多学生

我试图访问一个学生的课程,但AR正在寻找一个名为courses\u users的联接表,而我的名为courses\u students

Student.find(100).courses
  Student Load (0.8ms)  SELECT  "users".* FROM "users"  WHERE "users"."type" IN ('Student') AND      "users"."id" = $1 LIMIT 1  [["id", 100]]
PG::UndefinedTable: ERROR:  relation "courses_users" does not exist
我创建了一个名为courses\u users的新联接表,只是为了让AR满意,但AR希望在student\u id上联接这些表,但我现在使用的是具有user\u id的users表

Student.find(100).courses
  Student Load (1.0ms)  SELECT  "users".* FROM "users"  WHERE "users"."type" IN ('Student') AND  "users"."id" = $1 LIMIT 1  [["id", 100]]
PG::UndefinedColumn: ERROR:  column courses_users.student_id does not exist
LINE 1: ...courses"."id" = "courses_users"."course_id" WHERE "courses_u... 

我做错了吗?我希望教师和学生都保存为用户,但在模型中有不同的逻辑。

是否尝试指定类名和关联?。在课程类中,当你给出的有且属于多个:学生,指定联接类名或jpin表名,如下所示

所以,在课堂上, 是否有和属于许多:学生,:加入表格=>“课程学生”


您必须指定
关联\u外键

class Student < User
  has_and_belongs_to_many :courses, association_foreign_key: :user_id, 
end
class学生
我不确定这意味着什么,但它对我不起作用。谢谢:)我添加了:join_table=>“courses_students”到学生模型中,它就工作了。谢谢