Монгоидные ассоциации - PullRequest
0 голосов
/ 18 февраля 2011

У меня проблема с тем, что я пытаюсь дважды сослаться на модель, называемую пользователем, из модели комментария.

Первый случай - у пользователя может быть много комментариев (как получателя)

Но у другой ассоциации есть комментарий одного автора.Является ли это

references_one :user, :inverse_of :author

Тогда мне понадобится другая ассоциация пользователя для комментариев этого пользователя, а не для этого пользователя.

embedded_in :user, :inverse_of => :commentsout

Надеюсь, это имеет смысл.

Может быть, что-то подобное имеет больше смысла (псевдокод)

user:
   has_many: comments => author
   can_be: author, recipient

comment:
   belongs_to_many: users => recipients
   has_one: user => author

1 Ответ

1 голос
/ 18 февраля 2011

Если я правильно понимаю проблему, вы можете определить ассоциации следующим образом:

class User
  include Mongoid::Document      
  field :name,  :type => String      
  references_many :comments, :inverse_of => :author
  references_and_referenced_in_many :comments_received, :class_name => 'Comment', :inverse_of => :recipients
end

class Comment
  include Mongoid::Document    
  field :text, :type => String
  referenced_in :author, :class_name => 'User'
  references_and_referenced_in_many :recipients, :class_name => 'User', :inverse_of => :comments_received
end

Если цель не может быть выведена из имени ассоциации, вам нужно добавить параметр: class_name.Это позволяет иметь несколько ассоциаций для одного и того же класса.

...