2011-05-09 66 views
2

如何處理名稱空間內的mongoid文檔?
我有兩個mongoid文件如下:命名空間內的Mongoid文檔

module A 
module B 

Class User 
include Mongoid::Document 
field :name, type: String 
has_and_belongs_to_many :groups, :cascade => :nullify, :class_name => 'A::B::Group' 
end 

Class Group 
include Mongoid::Document 
field :name, type: String 
has_and_belongs_to_many :users, :cascade => :nullify, :class_name => 'A::B::User' 
end 

end 
end 

的問題,當我試圖刪除包含一個用戶組提出:

u = User.create() 
g = Group.create() 
g.users << u 

在這一點上u.groups_ids包含的的_id組g,但是當我執行時:

g.destroy 

它抱怨類'User'中缺少名爲'A/B/groups_ids'的方法。
它試圖移除內部ü克的參考,但它未能找到合適的命名空間...

如果我刪除的命名空間A和B以及:CLASS_NAME選項一切工作正常。
在這種情況下,哪種方法(如果有的話)可以處理命名空間?

回答

4

的解決方案是增加一個:foreign_key => 'A/B/groups_ids':

Class User 
include Mongoid::Document 
field :name, type: String 
has_and_belongs_to_many :groups, :cascade => :nullify, :class_name => 'A::B::Group', :foreign_key => 'A/B/group_ids' 
end 

Class Group 
include Mongoid::Document 
field :name, type: String 
has_and_belongs_to_many :users, :cascade => :nullify, :class_name => 'A::B::User', :foreign_key => 'A/B/user_ids' 
end 
+0

:級聯是不再是一種選擇我不認爲。 – i0n 2011-11-20 15:04:26