2012-03-21 80 views
3

我有4個車型在我的Rails應用程序:複合鍵關聯3

教室/教師/學生/分配

我需要有一個:教室之間

N * N的關係的師生

之間教師
N * N的關係對於這兩個關係,沒關係,因爲我將創建2個遷移的has_and_belongs_to_many。

對於分配模式,我需要把它與前3種型號鏈接:

分配表應該是這樣的:
- ID
- 標籤
- classroom_id
- teacher_id
- pupil_id

以下是對這種最後關係進行建模的最佳方法嗎?

class Assignment < ActiveRecord::Base 
    belongs_to: classroom 
    belongs_to: teacher 
    belongs_to: pupil 
end 

class classroom < ActiveRecord::Base 
    has_many: assignments 
end 

class teacher < ActiveRecord::Base 
    has_many: assignments 
end 

class pupils < ActiveRecord::Base 
    has_many: assignments 
end 

回答

0

考慮多態關聯http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

class Assignment < ActiveRecord::Base 
    belongs_to: assignable, :polymorphic => true 
end 

class Classroom < ActiveRecord::Base 
    has_many :assignment, :as => :assignable 
end 
+0

執行此關聯能夠有時只瞳孔鏈接到分配,有時具有元組(瞳孔,教師),並且還具有(瞳孔,老師,課堂)元組鏈接到作業?嗯...我不確定我是否清楚,但在我看來,賦值應該鏈接到元組(其中一個或兩個字段可以爲空)。 – Luc 2012-03-21 12:59:20

+0

幾個記錄可以共享相同的賦值?假設我的瞳孔ID爲2,ID爲5的課堂,ID爲20的作業是否可以鏈接到元組(2,5)? – Luc 2012-03-21 13:06:22

+0

不,它不能,任務只能屬於一個模型 – gayavat 2012-03-21 13:32:17