保存关系属性的最佳方法是什么?例如,我有模型Person和Project(M:N关系)。我想在项目中拯救人的角色。在关系数据库中,它将是联结表person_project中的一个属性。在Mongoid(RoR)中实现此功能的最佳方法是什么?
第二个问题:我应该在两个方面还是仅仅一侧为多对多关系保存ID?
答案 0 :(得分: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使用Arrays在两个集合中存储ID。 Person
集合有一个字段project_ids
,Project
集合有一个字段person_ids
答案 1 :(得分: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},...
]
}
即使您可以在项目中存储一些与用户相关的内容,我也总是会针对用户测试角色。