0

保存关系属性的最佳方法是什么?例如,我有模型 Person 和 Project(M:N 关系)。我想在项目中保存人员角色。在关系数据库中,它将是联结表 person_project 中的一个属性。在 Mongoid (RoR) 中实现这一点的最佳方法是什么?

第二个问题:我应该为多对多关系保存ID,还是只保存一侧?

4

2 回答 2

0

文档: http: //mongoid.org/en/mongoid/docs/relations.html#has_and_belongs_to_many

class Person
  include Mongoid::Document
  has_and_belongs_to_many :projects
end

class Project
  include Mongoid::Document
  has_and_belongs_to_many :persons
end

Mongoid 使用数组在两个集合中存储 ID。Person集合有一个字段project_idsProject集合有一个字段person_ids

于 2012-10-21T08:39:46.250 回答
0

我不会在项目中存储用户或特定用户角色(超级用户除外,或出于最终缓存原因)。仅仅因为有两个生命周期,当你做项目的时候你可能不会和用户混在一起。因此,作为开始,我会将角色设置存储在如下人员中:

{
 _id : Obj{},
 projects : [
   {project_one : role_name}, //use a name if name is unique if not use project_id as key
   {project_two : role_name}
 ]
}

或者更简单但需要更多空间

{
_id : Obj{},
projects : [
  {project_id : project_one,
   role : role_name},...
]
}

即使您可以在项目中存储一些与用户相关的内容,我也会始终针对用户测试角色。

于 2012-10-31T10:52:34.717 回答