По сути, вам нужна модель объединения, которая объединяет пользователей с пользователями. Но вам придется использовать более описательные термины для Rails.
Twitter не использует Rails, но вот как их пользовательские ассоциации могут работать в Rails, используя терминологию Twitter. Примечание: Twitter не требует двунаправленного следования (то есть, если пользователь следует за другим, это не значит, что второй пользователь следует за первым)
class User < ActiveRecord::Base
has_many :followings
has_many :followers, :through => :followings, :class_name => "User"
has_many :followees, :through => :followings, :class_name => "User"
end
class Following < ActiveRecord::Base
# fields: follower_id followee_id (person being followed)
belongs_to :follower, :class_name => "User"
belongs_to :followee, :class_name => "User"
end
Принудительная двунаправленная дружба (например, Facebook заставляет меня не дружить с вами, если вы не дружите со мной) потребует немного больше работы Вам нужно будет либо управлять ответными записями с помощью обратных вызовов, либо использовать пользовательский искатель SQL. Использование специального средства поиска SQL означает, что ActiveRecord, вероятно, не сможет управлять ассоциациями для вас.