Powiązania wielu modeli do wielu w jednej tabeli

Witam, potrzebuje zrobić powiązania modeli między sobą, przykładowo user can have many projects, user can have many users, project can have many files, file has project itd… Wymaganie jest jednak żeby te powiązania były zapisane w jednej tabeli. Abym mógłbym przykładowo wywołać. User.all_relations i dostałbym [project1, project2, file2, user2]. Da sie to zrobić za pomocą has_many_through ? Aha, może to mieć znaczenie, baza Postgress

STI?

Możesz to zrobić w taki sposób:

[code=“Ruby”]User.rb:
has_many :user_resources

def resources
user_resources.map {|ur| ur.resource}
end

UserResource.rb:

belongs_to :resource, :polymorphic => true

Project.rb

has_many :user_resources, :as => :resource

OtherResourceType.rb

has_many :user_resources, :as => :resource[/code]
Niestety, o ile dobrze wiem, to przy pomocy samego “has_many :through” nie da się zrobić polimorficznej relacji, stąd ta dodatkowa metoda w modelu User

Tak z czystej ciekawości: po co?