Вы можете использовать самоссылочные отношения многие ко многим:
class Person < ActiveRecord::Base
has_many :relationships,
:foreign_key => 'child_id'
has_many :parents,
:through => :relationships,
:source => :child
end
child.parents.count # -> 1
Эта запись в блоге содержит более подробную информацию.
Отредактировано, чтобы добавить: Ах, вы просто хотите, чтобы каждый человек, который является родителем. Вы можете запросить это:
class Person < ActiveRecord::Base
has_many :parent_relationships,
:class_name => 'Relationship',
:foreign_key => 'parent_id'
end
Person.joins(:parent_relationships).count # -> 1
При объединении с таблицей Отношений вы получите только записи Person с соответствующими Отношениями (внутреннее соединение). Это покрыто превосходными направляющими Rails.