Я создаю приложение rails3, которое будет включать возможность добавления других пользователей в друзья. Эти отношения должны вести себя как друзья на Facebook, где дружба должна быть взаимной, а не дружбой в Твиттере, когда пользователи могут дружить с другим пользователем без взаимности. Я не знаю, как это сделать без создания двух отдельных отношений между двумя пользователями. Вот что у меня есть:
class User < ActiveRecord::Base
has_many :friendships
has_many :friends, :through => :friendships
end
class Friendship < ActiveRecord::Base
belongs_to :user
belongs_to :friend, :class_name => "User", :foreign_key => "friend_id"
end
Чтобы создать дружбу, я звоню:
@user1.friends << @user2
Однако это создает отношения только в одном направлении. @ user2.friends все еще пуст. Единственный способ, которым я знаю, как заставить это работать прямо сейчас, это просто позвонить:
@user1.friends << @user2
@user2.friends << @user1