我在Rails 2.x中有Worker,Manager和Title模型。還有一個JOIN表只有worker_id,manager_id和title_id(沒有明確的模型)。正因爲如此JOIN表(並沒有爲它的模型),我想我必須具備以下條件:如果使用連接表,關係是否必須是HABTM?
在工人模式,我有:
Worker
has_and_belongs_to_many :managers
has_and_belongs_to_many :titles
但是,在現實中,關係是工人只能有1個經理,但是有很多職位。而且,許多工人都有相同的經理。
一些樣本數據來說明關係:
Worker | Title | Manager
Tom | A | M1
Tom | B | M1
Bob | A | M2
Pam | C | M1
是上述工人模式「正確」?當創建一個新的工人(和所有的關係),我做的:
worker = Worker.new("A")
title = "B"
manager = "C"
worker.titles << title
worker.managers << manager
worker.save
當我這樣做,我得到了在我的數據庫如下:
Worker | Title | Manager
A | B | null
A | null | C
我想獲得:
Worker | Title | Manager
A | B | C
你說,一個工人只能有1名經理,但有多個頭銜。如果是這樣的話,你爲什麼試圖將這兩種類型的關係(具有不同的基數)放在同一個表中? – 2011-01-26 10:32:02