从一对一的关系转变为轨道中的多对多关系

时间:2011-01-18 22:56:43

标签: ruby-on-rails-3 relational-database

就像标题所说,我想在我的rails 3应用程序中从一对一的关系转变为多对多的关系。

我现在对rails非常好,但我对数据库和迁移缺乏了解。

目前,我有一个项目和用户模型。项目属于用户和用户has_many项目。 我想进入一个项目可以让很多用户同时协作的情况。

我很确定我需要设置一个has_many:通过关系类型,但我也很好奇如何将所有现有项目和用户迁移到这种类型的系统中。

谢谢!

2 个答案:

答案 0 :(得分:0)

您需要另一个将两个表链接在一起的表。这是如何支持多对多的关系。

e.g。假设您有两个这样的表:

Projects
----------
projectid
{other columns}    

Users
-------
userid
{other columns}

新表格如下所示:     新表

Projects_Users
--------------
projectid
userid

现在,您只需添加userid和projectid即可将另一个用户添加到项目中 Projects_Users表。同样,您可以将多个用户添加到同一个表中的一个项目中。

该表上的主键是复合键projectid&用户ID。

答案 1 :(得分:0)

  

是的,我现在已经建立了关系。如何将所有现有项目和用户迁移到这个新的格式表中?

嗯,这取决于你现在如何设置表格;两个现有关系如何实施; ProjectUser数据位于旧表中的位置。发布您的DDL。你应该能够简单地INSERT ProjectUser SELECT FROM ...。我们需要完成那个FROM。

行数也是相关的;如果它很大,你可能不得不将它分成几批。