Mongoid references_many ids数组

时间:2010-12-02 19:23:49

标签: ruby-on-rails mongoid

我有一个关于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正确更新。

1 个答案:

答案 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