ユーザを接続するユーザFriendship (user1_id, user2_id)
を作成する必要があります。Howto構造のレールユーザーフレンドシップモデル?
友人関係が両方向に進むにつれて、すべてのユーザー/友人に2つのレコードを作成する必要はありません。
class Friendship < ActiveRecord::Base
belongs_to :user1
belongs_to :user2
after_create :create_mirror!
after_destroy :destroy_mirror!
validate :does_not_exist
def mirror_record
Friendship.where(:user1_id => user2.id, :user2_id => user1.id).first
end
private
def does_not_exist
errors.add(:base, 'already exists') if Friendship.where(:user1_id => user1.id, :user2_id => user2.id) rescue nil
end
def create_mirror!
Friendship.create(:user1 => user2, :user2 => user1)
end
def destroy_mirror!
mirror_record.destroy if mirror_record
end
end
私がやりたいことは、最高の唯一の解決策である、ミラーリングの記録を持たない悪夢です。 –