Вы можете достичь желаемого, используя параметры class_name и inverse_of:
class Account
include Mongoid::Document
field :name
has_many :ratings_given, :class_name => 'Ratings', :inverse_of => :rater
has_many :my_ratings, :class_name => 'Ratings', :inverse_of => :ratee
end
class Ratings
include Mongoid::Document
field :name
belongs_to :rater, :class_name => 'Account', :inverse_of => :ratings_given
belongs_to :ratee, :class_name => 'Account', :inverse_of => :my_ratings
end
Документация изменилась с тех пор, как я в последний раз работал с ней, поэтому я не был уверен, что это все еще рекомендуемый подход. Похоже, он не упоминает эти опции на странице 1-многие ссылки . Но если вы посмотрите на общую страницу по отношениям , они там описаны.
В любом случае вам нужно явно связать ассоциации рейтинги_гивена / ратера и my_ratings / ratee, когда есть две ассоциации с одним и тем же классом, в противном случае mongoid не сможет узнать, какую из двух потенциальных инверсий выбрать.