0

我的研讨会模型有一个名为teacher_id的列。这部分关系正在发挥作用。我可以致电seminar.teacher检索教授研讨会的用户。从自定义名称获取关联

我希望能够反转该查询。换句话说,我需要调用teacher.own_seminars来获取该用户列为teacher_id的所有研讨会的集合。我知道我可以给Seminar.where(:teacher => teacher)打电话,但这很笨拙。我认为这种表现可能更糟糕。

注意:某些用户是通过seminar_user连接表连接到研讨会的学生,但我认为这不会影响此问题。

这是模型设置,这种说法并不工作尚未

class User < ApplicationRecord 
    has_many  :own_seminars, :class_name => "Seminar", foreign_key: 'own_seminar_ids' 
end 



class Seminar < ApplicationRecord 
    belongs_to :teacher, class_name: "User", foreign_key: 'teacher_id' 
end 

干杯!

回答

2

foreign_key选项中,您指定的是哪个列,以及外键

has_many的工作方式是试图猜测被引用实体中的哪个字段对应于该实体的主键。默认情况下,它是user_id(源自User)。但是由于您的专栏实际上被称为teacher_id,因此您应该使用它。

has_many :own_seminars, 
     class_name: "Seminar", 
     foreign_key: 'teacher_id' 
相关问题