以下是我的模特:
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
我首先通过种子,rake db:seed创建角色。我的种子文件包含:
puts '*** Add default roles'
[
{ :name => 'User' },
{ :name => 'Artist' }
].each do |h|
Role.create(h)
end
成功创建角色。但是,当我向用户添加角色时,我会这样做:
foobar = User.first
foobar.roles.create(:name => 'User')
我注意到两件事:
1)它将角色添加为User集合中的引用。
2)它在Role集合中创建第3个角色。
这有点奇怪,因为现在我有3个角色:用户,艺术家和用户。第二个User集合有一个user_ids引用,其中包含foobar的id。
这是正常的吗?
答案 0 :(得分:1)
我认为你更愿意这样做:
foobar = User.first
foobar.roles << Role.find(:name => 'User')
foobar.save
这样就不会创建角色对象,但会将引用添加到现有记录中。