就像标题所说,我想在我的rails 3应用程序中从一对一的关系转变为多对多的关系。
我现在对rails非常好,但我对数据库和迁移缺乏了解。
目前,我有一个项目和用户模型。项目属于用户和用户has_many项目。 我想进入一个项目可以让很多用户同时协作的情况。
我很确定我需要设置一个has_many:通过关系类型,但我也很好奇如何将所有现有项目和用户迁移到这种类型的系统中。
谢谢!
答案 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。
行数也是相关的;如果它很大,你可能不得不将它分成几批。