Я не думаю, что есть определенный ответ на ваш вопрос.
Но для простоты я бы хотел использовать только одну Connection
таблицу с флагами
Особенно, если вы можете только избирать подписанных людей, проверка становится намного проще.Все еще позволяет легкие аксессуары в вашей модели
class Person < ActiveRecord::Base
...
has_many :favorites, :through => :connections, :conditions => { :is_favorite => true }, :source => ...
has_many :followers, :through => :connections, :conditions => { :is_followed => true }, :source => ...
has_many :followee, :through => :connections, :conditions => { :is_followed => true }, :source => ...