2012-03-20 54 views
1

我发现很多在计算器上的答案,但我有点停留在这一个 我先试着用言语来形容我所要做的:Rails 3 - 多对多 - 你会怎么做?

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

然而,这里的困难是,每个配置文件从应用的到来,用户有一个用户名,具体到每一个应用程序。当我看到一个用户的详细信息,我想看到的一切他与他已被分配给每个应用程序的用户名一起配置文件的列表...

我敢肯定有一个简单的方法来做到这一点像往常一样用导轨,但我似乎无法找到它。你会如何做到这一点?

回答

2

因此,要确保我有这样的:一个应用程序可以有多个配置文件,用户可以有多个配置文件。因此,这不是简单的应用程序和用户之间的多对多关系,因为该配置文件是第一类对象。

Rails的处理与has_and_belongs_to_many(HABTM)的关联,在两端的车型申报简单许多一对多的关系。中间什么是不重要的,仅仅是为了加入(关联)两种模式。

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

开始与这个excellent guide which should show you how (and why) to choose has_many :through以及如何得到这一切建模和建立。这是(如你所建议的那样)Rails绝对出色的功能之一。

我希望这是有帮助的。

+0

谢谢,这是确实的方式。在此期间我曾尝试过,并且它很有用。我担心这不是正确的解决方案,所以我事先发布了这个问题......我不是开发者,但我并没有那么糟糕。不过,我在配置文件页面的编辑表单时遇到了问题。我希望能够从那里管理用户(添加,删除并能够指定他们将具有哪个用户名,同时将新用户添加到配置文件中),我使用fields_for,但它似乎只显示一个空白字段。我想这是关于另一个问题的另一个问题,所以我明天会很快恢复。 – jdel 2012-03-20 01:57:04