Вот мои модели:
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
Сначала я создаю роли через seed, 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')
Я замечаю 2 вещи:
1) Добавляет роль в качестве ссылки в коллекцию пользователей.
2) Создает третью роль в коллекции ролей.
Это немного странно, потому что теперь у меня 3 роли: Пользователь, Исполнитель и Пользователь. Вторая коллекция пользователя имеет ссылку на user_ids, которая содержит идентификатор foobar.
Это нормально?