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?