如何在Mongoid中使用命名空间集合?

时间:2011-07-13 19:34:32

标签: mongodb mongoid

我需要收集如:

  • client1.users
  • client1.images
  • client2.users
  • client2.images

MongoDB支持Collection命名空间。 http://www.mongodb.org/display/DOCS/Using+a+Large+Number+of+Collections

使用MongoDB的Ruby驱动程序,这不会有问题,但我希望有一个ODM。

如何在Mongoid中使用名称空间集合?

1 个答案:

答案 0 :(得分:3)

您可以使用Mongoid将模型放入名称空间。您必须在您定义的任何关联中指定完全限定的class_name,例如

module Client1
  class Image
    include Mongoid::Document
    referenced_in :user, :inverse_of => :images, :class_name => 'Client1::User'
  end

  class User
    include Mongoid::Document
    references_many :images, :inverse_of => :user, :class_name => 'Client1::Image'
  end
end

Mongoid会将这两个类分别映射到MongoDB集合client1_images和client1_users。