2017-07-22 138 views
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' 
相關問題