Решил это. Это работает, и я должен сказать, что я очень впечатлен тем, как работают области и отношения:
class Party
has_many :party_relationships, foreign_key: :party_id
end
class PartyRelationship
belongs_to :related_party, :class_name => 'Party'
scope :to_organisations, :joins => :related_party, :conditions => {:parties => {:type => 'Organisation' } }
end
Теперь, если у меня будет вечеринка ...
@party.party_relationships # <- returns all relationships
@party.party_relationships.to_organisations # <- Only those where related_party is an organisation
Что мне действительно нравится в этом, так это то, что если бы я использовал: finder_sql в has_many, тогда SQL был бы в классе Party. Таким образом, все вещи должным образом инкапсулируются, так что Сторона не должна знать, как реализуется сфера применения. Ухоженная.