从自定义名称获取关联
Get association from custom name
我的研讨会模型有一个名为 teacher_id 的列。这部分关系正在发挥作用。我可以调用 seminar.teacher 来检索教授该研讨会的用户。
我希望能够反转该查询。换句话说,我需要调用 teacher.own_seminars 来获取该用户列为 teacher_id 的所有研讨会的集合。我知道我可以调用 Seminar.where(:teacher => teacher),但这很笨拙。而且我认为那样的话性能可能更差。
注意:有些用户是通过 seminar_user 加入 table 链接到研讨会的学生,但我认为这不会影响这个问题。
这是模型设置,还不能正常工作
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
干杯!
在 foreign_key
选项中,您指定的列是 外键 。
has_many
的工作方式是尝试猜测引用实体中的哪个字段对应于该实体的主键。默认情况下,它是 user_id
(派生自名称 User
)。但由于您的专栏实际上名为 teacher_id
,因此您应该改用它。
has_many :own_seminars,
class_name: "Seminar",
foreign_key: 'teacher_id'
我的研讨会模型有一个名为 teacher_id 的列。这部分关系正在发挥作用。我可以调用 seminar.teacher 来检索教授该研讨会的用户。
我希望能够反转该查询。换句话说,我需要调用 teacher.own_seminars 来获取该用户列为 teacher_id 的所有研讨会的集合。我知道我可以调用 Seminar.where(:teacher => teacher),但这很笨拙。而且我认为那样的话性能可能更差。
注意:有些用户是通过 seminar_user 加入 table 链接到研讨会的学生,但我认为这不会影响这个问题。
这是模型设置,还不能正常工作
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
干杯!
在 foreign_key
选项中,您指定的列是 外键 。
has_many
的工作方式是尝试猜测引用实体中的哪个字段对应于该实体的主键。默认情况下,它是 user_id
(派生自名称 User
)。但由于您的专栏实际上名为 teacher_id
,因此您应该改用它。
has_many :own_seminars,
class_name: "Seminar",
foreign_key: 'teacher_id'