Вам понадобятся отношения «многие ко многим» между Задачами и Пользователями, и вам понадобятся дополнительные отношения «один ко многим» между Пользователями и Задачами, указывающие на создателя (Пользователя).
Что-то вроде этого: (я обычно использую Mongoid, поэтому дважды проверьте синтаксис для отношений в API MongoMapper - ссылка ниже .. вы можете указать вручную: foreign_key and: class)
Идея состоит в том, что у вас есть две взаимосвязи между моделями, одна из которых моделирует взаимосвязь "многие ко многим"
с которой вы получаете либо assigned_users
или assigned_tasks
, и отношение один ко многим, с которым вы получаете либо creator
задания, либо created_tasks
для данного пользователя. Если вы выбрали эти имена для отношений, будет понятно, какие именно.
class Task
include MongoMapper::Document
key :title, String , :required => true
key :user_ids , Array
has_many :users, :in => user_ids # , :as => :assigned_users
key :creator_id , ObjectId
belongs_to: user, :as => :creator
end
class User
include MongoMapper::Document
key: name, String, :required => true
has_many :tasks # , :as => :assigned_tasks
has_many :tasks, :as => :created_tasks
end
См:
http://mongomapper.com/documentation/plugins/associations.html