我有一个应用程序,其中有用户,由Devise管理。应用程序的实际用户将添加人员作为“朋友”和另一种类型,让我们称他们为“工人”。在一天结束时,“朋友”和“工人”是,或者我希望他们都是用户类型。
问题在于,用户需要能够在系统中拥有一个人(用户),他们既是“朋友”又是“工人”。还需要通过其唯一ID来对用户进行不重复,在这种情况下,这将是移动电话号码。例如,如果给定用户将另一个用户添加为“朋友”,然后将其添加为“工作人员”,则它应该只是某种关联,而不是系统中的新用户。
我知道如何在传统意义上处理这个问题,但我确信有一些聪明的方法可以使用STI或多态关联来处理这个问题。
有什么想法?值得注意的是,各种用户类型都具有与它们相关联的几乎相同的字段(或将会) - 非常简单的id,名称,移动等。
我想诀窍是任何用户都需要能够拥有与他们相关联的“朋友”或“工人”类型中的任何一个或两个,并且每个类型都应该能够拥有其他类型的组合。两个与他们相关。
答案 0 :(得分:1)
在我看来,某人是朋友还是工人应该是两个人之间联合模式的属性,而不是任何一个人的属性。
这样一个人可以成为一个人的朋友和另一个人的工人。