2011-07-13 30 views

回答

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。

+0

我需要動態地這樣做,因爲可能會有大量的客戶端。 – Nerian

+0

我想在Ruby中可以用Module.new或module_eval動態生成這些模塊和類。這不是我曾嘗試過的與Mongoid模型類的事情,我不知道如果你有一個非常大的數字會如何擴展。使客戶端成爲Mongoid :: Document並定義客戶端和用戶之間的關聯(或者任何適合於該域名的關聯)會更傳統 - 我不知道你的要求。 – Steve

+0

基本上是一個多租戶應用程序。我有一個應用程序服務器,並且此服務器使用一個數據庫。我想通過對收藏集進行命名隔離來隔離來自不同客戶端的數據。這可以很容易地使用紅寶石驅動程序完成,但我寧願有驗證和Mongoid給出的其他ODM糖。 – Nerian