3

作成中のサイトで友達ネットワークを作ろうとしています。私はモンゴイドを使用しています。友達をインスタンス化するにはどうすればよいですか?

私は、ユーザーが他の複数のユーザーと関係を持つ必要があると想定しています。しかし、次のコード:

class User
  include Mongoid::Document
  references_many :users, :stored_as=>:array, :inverse_of=> :users
end

無効なクエリがあることを教えてくれます。私は何を間違っていますか?私が探しているものを取得する方法について何か提案はありますか?

4

2 に答える 2

3

どうやら、多くの調査の結果、Mongoid は現在、周期的な関連付けを行うことができませんが、修正が必要であるとマークされており、将来のバージョンで修正される可能性があります。私が現在使用している回避策は次のとおりです。

class User
  include Mongoid::Document
  field :friends, :type => Array, :default => []

  def make_friends(friend)
    self.add_friend(friend)
    friend.add_friend(self)
  end

  def friends
    ids = read_attribute :friends
    ids.map { |id|  User.find(id)}
  end

  def is_friends_with? other_user
    ids = read_attribute :friends
    ids.include? other_user.id
  end

protected

  def add_friend(friend)
    current = read_attribute :friends
    current<< friend.id
    write_attribute :friends,current
    save
  end
end
于 2010-09-15T01:56:44.887 に答える