我在中央和协调员之间有一个has_many_and_belongs_to关系。 所以我的mongo文件如下所示:
central = {
_id: 1,
title: 'First Name',
coordinators: [
BSON[1],
BSON[2],
BSON[3]
]
}
coordinators = [
{
_id: 1,
name: 'Me',
centrals: [BSON[1], BSON[2]]
},
{
_id: 1,
name: 'Mateus'
centrals: [BSON[1]]
},
{
_id: 1,
name: 'Gomes'
centrals: [BSON[1]]
},
]
如果我这样做:
@central = Central.find(1)
@coordinator = @central.coordinators.find(1)
@coordinator.can_edit = false
它将适用于协调员文件,结果如下:
coordinator = {
_id: 1,
name: 'Me',
centrals: [BSON[1], BSON[2]],
can_edit: false
}
但我真正想要做的是在关系中应用这个can_edit属性,就像在RDBMS中的数据透视表中一样:
central = {
_id: 1,
titulo: 'First Name',
coordinators: [
{
_id: 1,
name: 'Me',
can_edit: false
},
BSON[2],
BSON[3]
]
}
仅对于id为1的中心,我想将can_edit变为false。
我必须保持中央和协调员之间的关系,但在某些情况下,我希望获得有关该关系的其他信息,例如,如果我不允许协调员仅在ID为1的中央编辑某些数据。
我怎样才能使用mongoid?
答案 0 :(得分:0)
解决方法是创建另一种关系N-N:
添加 central.rb
has_and_belongs_to_many :blocked_coordenadors,
class_name: "Central",
inverse_of: :blocked_centrals
在 coordinator.rb :
has_and_belongs_to_many :blocked_centrals,
class_name: "Central",
inverse_of: :blocked_coordenadors
要检查我这样做:
central.blocked_coordenadors.include? coordinator