嗨,大家好,我在这里思考这个问题太久就陷入僵局。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