2012-01-06 42 views
0

我有一个应用程序,其中有由Devise管理的用户。应用程序的实际用户将添加人员作为“朋友”和另一种类型,让他们称为“工作人员”。在一天结束时,“朋友”和“工作人员”或我希望他们是所有类型的用户。Rails设计多种类型的用户 - 也许是STI?

问题在于需要一个用户能够让系统中的一个人(用户)为他们的“朋友”和“工作者”。还需要用户通过其独特的ID进行非复制,在这种情况下,这将是手机号码。例如,如果给定的用户将另一个用户添加为“朋友”,然后将他们添加为“工作人员”,则它应该简单地是某种类型的关联,而不是系统中的新用户。

我知道我会如何处理这个传统意义上的,但我确定有一些聪明的方式与STI或多态关联来处理这个问题。

有什么想法?值得注意的是,各种用户类型都有几乎相同的字段(或将)与他们相关 - 非常直接的ID,名称,移动等。

我猜的诀窍是任何用户需要能够有“朋友”或“工作人员”类型中的任何一种或两种都与它们相关联,并且这些类型中的每一种都应该能够具有与其关联的其他两种类型的组合。

回答

1

这听起来像是某人是朋友还是工人应该是两个人之间的连接模型的属性,而不是任何一个人的属性。

这样一个人可以成为一个人和另一个人的工作者的朋友。

+0

我想也许我的解释是不够的。以下是实际场景: – 2012-01-08 21:56:05

+0

用户由Devise管理。我有父母的用户,其他父母(或“朋友”)的用户和保姆的用户。用户(父母)可以有许多朋友和许多保姆,朋友也可以*自己保姆。 我需要用户能够获得他们的保姆和他们的朋友列表,并且如果用户已经在系统中添加了一个保姆或朋友(手机#是唯一的),系统将不会添加另一个用户,而是,只需建立他们的保姆或朋友关系,因为用户已经存在。 这是否更有意义?对此有何想法? – 2012-01-08 22:06:12