嗨,大家好,我在這裏思考這個問題太久就陷入僵局。Rails協會:HABTM?
背景:鑑於以下型號:
- 用戶
- 項目
- 鎖定
這裏的場景:一個鎖基本上是像一個 '持有'。用戶可以在任何給定物品上放置一個「鎖定」,以通知系統該物品不應該被刪除。在清除鎖定之前項目不會被刪除。
這是棘手的部分。鎖是它自己的模型,因爲我希望多個用戶能夠鎖定任何給定的項目。所以我們假設鮑勃鎖定了一個物品,一個物品尚不存在,因此它爲該物品創建了一個鎖,以及說明鮑勃當前與該鎖相關聯的信息。約翰來了並鎖定相同的物品,但鎖已經存在,所以約翰被簡單地添加到同一個鎖下。在所有用戶選擇「解鎖」或取消關聯自己的鎖之前,鎖不會被刪除。
我的困惑是我應該如何建模這些關係。用戶當然可以擁有許多鎖,每個鎖都與一個不同的項目相關聯(因爲任何給定的項目最多隻能有一個鎖)。鎖本身可以有很多用戶。從該項目的角度來看,每個項目可以有一個與許多用戶相關聯的鎖。
因此,換句話說,我想訪問的信息少了一些這樣的:
item.lock.users # get the users 'locking' the item
user.locks # get the items the user is currently 'locking
也許不需要單獨鎖定模式,但我想這將是爲了表示該多個用戶可以鎖定一個特定的項目。
我覺得更復雜的事情是,用戶添加的項目,所以我想有一種方式來訪問用戶的項目,例如user.items
或item.user
。
現在我有:
- 用戶屬於許多鎖
- 鎖具有屬於許多用戶
- 用戶有很多項目
- 項目屬於用戶
- 項目有一把鎖
- 鎖屬於物品
這看起來正確嗎?
哇!這麼簡單,我想得太過分了,我完全沒有想到它。非常感謝!兩次,你已經幫了我:) – 2010-11-25 23:41:33
我很高興幫助。 – rwilliams 2010-11-25 23:55:05