@ Тадман, насколько я понимаю, прав, но есть наивный способ сделать это:
has_many :basketballclub_members, :through => :basketballclubs, :class_name => 'Member'
has_many :footballclub_members, :through => :footballclubs, :class_name => 'Member'
def all_members
basketballclub_members + footballclub_members
end
Это очень наивно, однако, вы, вероятно, захотите запомнить (кешировать) результат этого +
, например.
Чуть менее наивно было бы использовать composed_of
, например ::
has_many :basketballclub_members, :through => :basketballclubs, :class_name => 'Member'
has_many :footballclub_members, :through => :footballclubs, :class_name => 'Member'
composed_of :members, [ 'basketballclub_members', 'footballclub_members' ],
:class_name => 'Array',
:constructor => proc {|bb_members, fb_members| bb_members + fb_members }
Я не проверял это, поэтому может потребоваться некоторая настройка, но это основная идея.
Caveat emptor , однако - с помощью любого из этих методов вы потеряете все удобные методы сбора ActiveRecord (вы просто получите простой старый массив объектов).