从自定义名称获取关联

Posted

技术标签:

【中文标题】从自定义名称获取关联【英文标题】:Get association from custom name 【发布时间】:2017-12-28 18:29:12 【问题描述】:

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

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

注意:有些用户是通过seminar_user 连接表链接到Seminar 的学生,但我认为这不会影响这个问题。

这是尚未完全正常工作的模型设置

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

干杯!

【问题讨论】:

【参考方案1】:

foreign_key 选项中,您指定的列是外键

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

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

【讨论】:

以上是关于从自定义名称获取关联的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress - 从自定义帖子类型查询第一个和名称

WordPress > 从自定义帖子类型获取自定义分类

从自定义相册中删除图像

iOS--app自定义相册--从自定义的相册中获取图片

从自定义 UICollectionViewCell 获取正确的按钮

如何从自定义 UITextView 单元中获取文本?