我有两个模型Group
,Person
我想建立一个多对多的关系,但我不清楚如何管理这种关系本身。我希望能够分别创建组和人员——不一定通过嵌套模型——然后从组视图/模型本身将人员链接到组。
有人对如何做到这一点有任何建议吗?
我想通过连接模型创建多对多关系,然后在模型中接受连接模型的嵌套属性Group
——所以我相信我将能够通过Group
视图/模型添加和删除关系。这种方法有意义吗?
我有两个模型Group
,Person
我想建立一个多对多的关系,但我不清楚如何管理这种关系本身。我希望能够分别创建组和人员——不一定通过嵌套模型——然后从组视图/模型本身将人员链接到组。
有人对如何做到这一点有任何建议吗?
我想通过连接模型创建多对多关系,然后在模型中接受连接模型的嵌套属性Group
——所以我相信我将能够通过Group
视图/模型添加和删除关系。这种方法有意义吗?
我会创建一个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
创建一个联结表。当您要存储多对多关系时,使用联结表。我没有在 ROR 中开发,所以我不知道 ActiveRecord 的细节,但我相信这也可以帮助你思考问题。
group_id INTEGER,
person_id INTEGER