1

我有两个模型GroupPerson我想建立一个多对多的关系,但我不清楚如何管理这种关系本身。我希望能够分别创建组和人员——不一定通过嵌套模型——然后从组视图/模型本身将人员链接到组。

有人对如何做到这一点有任何建议吗?

我想通过连接模型创建多对多关系,然后在模型中接受连接模型的嵌套属性Group——所以我相信我将能够通过Group视图/模型添加和删除关系。这种方法有意义吗?

4

2 回答 2

1

我会创建一个PersonGroup看起来像这样的模型:

class PersonGroup < ActiveRecord::Base
  has_many :people
  has_many :groups
end

您也可以这样做rails generate migration create_person_group并将其放入up生成的迁移文件的方法中:

create_table :person_group do |t| 
  t.integer :person_id, :null => false
  t.integer :group_id, :null => false

  t.timestamps
end 

add_index :person_group, [:person_id, :group_id], :unique => true

然后在Person

class Person < ActiveRecord::Base
  has_many :person_groups
  has_many :groups, :through => :person_groups
end

并在Group

class Group < ActiveRecord::Base
  has_many :person_groups
  has_many :people, :through => :person_groups
end
于 2012-09-18T17:24:27.210 回答
0

创建一个联结表。当您要存储多对多关系时,使用联结表。我没有在 ROR 中开发,所以我不知道 ActiveRecord 的细节,但我相信这也可以帮助你思考问题。

group_id INTEGER,
person_id INTEGER
于 2012-09-18T17:22:11.897 回答