我有一个关于references_many的mongoid id存储的问题。
假设我有以下类:
class A
include Mongoid::Document
field :name
attr_accessible :name, :b_ids
references_many :bs, :stored_as :array, :inverse_of :a
end
class B
include Mongoid::Document
field :name
attr_accessible :name, :a_id
referenced_in :a
end
如果我执行以下操作:
a = A.create(:name => "a1")
b = B.create(:name => "b1")
b.a = a
我应该期望a.b_ids数组是一个包含b的id的数组吗?
我看到的行为是b.a_id包含一个id,但a.b_ids不包含b的id。
A侧的id数组是否应该手动更新?
是的,如果我做a.bs<< b,然后a.b_ids正确更新。答案 0 :(得分:1)
要回答我自己的问题,目前不会自动设置id数组。 计划在mongoid的重构分支被释放后包含此功能。
此信息来自此主题:http://groups.google.com/group/mongoid/browse_thread/thread/9ac74dc9a08a5fe2/d3a7c2404b67abfa
在此之前,必须手动跟踪ID。
一个例子是:
class A
include Mongoid::Document
field :name
attr_accessible :name, :b_ids
references_many :bs, :stored_as :array, :inverse_of :a
def add_b b
bs << b
self.save
end
def remove_b b
b_ids.delete b.id
b.save
end
end
class B
include Mongoid::Document
field :name
attr_accessible :name, :a_id
referenced_in :a
end
a = A.create(:name => "a1")
b = B.create(:name => "b1")
b.a = a
a.add_b b