【发布时间】:2010-11-26 07:52:14
【问题描述】:
大家好,我在考虑这个问题太久后陷入了僵局。
上下文:给定以下模型:
- 用户
- 项目
- 锁定
以下是场景:锁基本上就像“保持”。用户可以在任何给定项目上放置“锁定”以向系统发出不应删除该项目的信号。在锁定被清除之前,项目不会被删除。
这是棘手的部分。锁是它自己的模型,因为我希望多个用户能够锁定任何给定的项目。因此,假设 Bob 锁定了一个项目,该项目尚不存在,因此它为该项目创建了一个锁,以及说明 Bob 当前与该锁相关联的信息。 John 来锁定同一个项目,但已经存在一个锁,所以 John 只是简单地“添加到”同一个锁下。在所有用户选择“解锁”或解除与该锁的关联之前,该锁不会被移除。
我的困惑是我应该如何为这些关系建模。用户当然可以拥有许多锁,每个锁与不同的项目相关联(因为任何给定项目最多可以有一个锁)。锁本身可以有很多用户。从项目的角度来看,每个项目可以有一个锁与多个用户关联。
换句话说,我想像这样访问信息:
item.lock.users # get the users 'locking' the item
user.locks # get the items the user is currently 'locking
也许不需要单独的 Lock 模型,但我认为这是为了表示多个用户可以锁定特定项目。
我认为让事情更复杂的是用户添加的项目,所以我希望有一种方法可以让用户访问项目,例如 user.items 或 item.user。
现在我有:
- 用户拥有并属于许多锁
- 锁拥有并属于许多用户
- 用户有很多项目
- 项目属于用户
- 项目有一把锁
- 锁属于物品
这看起来正确吗?
【问题讨论】:
标签: ruby-on-rails activerecord associations