Ruby on rails 从自定义名称获取关联

Ruby on rails 从自定义名称获取关联,ruby-on-rails,associations,rails-activerecord,class-names,Ruby On Rails,Associations,Rails Activerecord,Class Names,我的研讨会模型有一个名为teacher_id的专栏。这部分关系正在发挥作用。我可以调用seminar.teacher来检索教授该研讨会的用户 我希望能够颠倒这个问题。换句话说,我需要调用teacher.own\u研讨会来获取所有研讨会的集合,其中该用户被列为教师id。我知道我可以调用Seminar.where(:teacher=>teacher),但这太麻烦了。我认为这样的表现可能更糟 注意:有些用户是通过“研讨会\用户加入表”链接到研讨会的学生,但我认为这不会影响这个问题 这是一个尚未完全工作

我的研讨会模型有一个名为teacher_id的专栏。这部分关系正在发挥作用。我可以调用seminar.teacher来检索教授该研讨会的用户

我希望能够颠倒这个问题。换句话说,我需要调用teacher.own\u研讨会来获取所有研讨会的集合,其中该用户被列为教师id。我知道我可以调用Seminar.where(:teacher=>teacher),但这太麻烦了。我认为这样的表现可能更糟

注意:有些用户是通过“研讨会\用户加入表”链接到研讨会的学生,但我认为这不会影响这个问题

这是一个尚未完全工作的模型设置

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
class用户“研讨会”,外键:“自己的研讨会ID”
结束
课堂讨论会<申请记录
属于:教师,班级名称:“用户”,外键:“教师id”
结束

干杯

foreign\u key
选项中,您指定的列是外键

的工作方式是尝试猜测引用实体中的哪个字段对应于该实体的主键。默认情况下,它是
user\u id
(源自name
user
)。但由于您的列实际上被称为
teacher\u id
,因此您应该使用它

has_many :own_seminars, 
         class_name: "Seminar", 
         foreign_key: 'teacher_id'

foreign\u key
选项中,指定一列,也就是外键

的工作方式是尝试猜测引用实体中的哪个字段对应于该实体的主键。默认情况下,它是
user\u id
(源自name
user
)。但由于您的列实际上被称为
teacher\u id
,因此您应该使用它

has_many :own_seminars, 
         class_name: "Seminar", 
         foreign_key: 'teacher_id'