Rails 3 - 多对多 - 你会怎么做?

时间:2012-03-20 00:10:02

标签: ruby-on-rails-3 many-to-many

我在StackOverflow上找到了很多答案,但我有点坚持这个 我会首先用文字描述我必须做的事情:

我有多个应用程序,每个应用程序可以有一个或多个配置文件(一个到多个)。 我也有用户,他们可以通过不同的配置文件访问每个应用程序。每个配置文件可以有多个用户(多对多)。 到这里没问题,我可以获得用户被授予的所有个人资料。

然而,这里的困难在于,对于来自应用程序的每个配置文件,用户具有特定于每个应用程序的用户名。当我看到用户的详细信息时,我希望看到他所在的所有配置文件的列表以及为每个应用程序分配的用户名...

我确信有一种简单的方法可以像往常一样使用rails,但我似乎无法找到它。你会怎么做?

1 个答案:

答案 0 :(得分:2)

所以为了确保我得到了这个:一个应用程序可以有很多个人资料,用户可以有很多个人资料。因此,这不是Application和User之间简单的多对多关系,因为Profile是一流的对象。

Rails处理与两端模型上声明的has_and_belongs_to_many(HABTM)关联的简单多对多关系。中间的东西是不重要的,只是用来加入(联系)这两个模型。

你的案子更有趣。你的多对多在Rails中被描述为" has_many:通过",我认为你的案例是这种情况的一个很好的例子。在这种情况下,Application和User各自通过Profile模型拥有许多其他的。个人资料并不仅仅是为了链接这两者,它拥有用户名,可能还有很多其他用户与他/她的应用程序关系的细节。

从这个excellent guide which should show you how (and why) to choose has_many :through开始,以及如何对其进行全部建模和设置。这是(正如你的建议)Rails绝对出色的功能之一。

我希望这有用。