0
這裏是我的模型:Mongoid多對多,這是正常的嗎?
class User
include Mongoid::Document
include Mongoid::Timestamps
references_many :roles, :stored_as => :array, :inverse_of => :users
...
end
class Role
include Mongoid::Document
field :name, :type => String
references_many :users, :stored_as => :array, :inverse_of => :roles
...
end
我先創建通過種子,耙分貝的角色:種子。我的種子文件包含:
puts '*** Add default roles'
[
{ :name => 'User' },
{ :name => 'Artist' }
].each do |h|
Role.create(h)
end
角色已成功創建。然而,當我添加一個角色給用戶,我做的:
foobar = User.first
foobar.roles.create(:name => 'User')
我注意到兩兩件事:
1)它增加了爲用戶採集的參考作用。
2)它在角色集合中創建第3個角色。
這有點奇怪,因爲現在我有3個角色:用戶,藝術家和用戶。第二個用戶集合有一個user_ids引用,其中包含foobar的id。
這是正常的嗎?
是的,它看起來像它做對了。偶然的,你知道如何刪除引用後添加「<<」? – 2010-11-21 09:22:47
@Christian那麼,這是一個很好的。我不是經驗豐富的Mongoid用戶,但我會嘗試'foobar.roles.find(:name =>'User')。destroy'。在我看來,這兩個實體之間的聯繫並不存在,並且不會破壞整個角色。但是在生產之前很久就要進行測試。 :) – pestaa 2010-11-21 09:56:24
嗯。剛剛嘗試過.destroy,顯然它刪除了Role集合中的完整角色。謝謝你的嘗試,但:-) – 2010-11-21 10:14:43