Asocjacje pomiędzy tabelami - sprawdzenie jej z wyjaśnieniami

Witam.
Zaczynam uczyć się Ruby on Rails i zrobiłem taki model bazy danych:
Niestety nie wiem czy same tabele są dobrze zaprojektowane.
Jeden User(devise) może mieć kilka projektów. Ten projekt składa się z Playerów, Grup, Konkursów i rezultatów. Studiowałem z 5 razy z Ruby Guides na temat asocjacji, lecz mam dużo wątpliwości

class PlayerStrong < ActiveRecord::Base
  belongs_to :project_strong
  belongs_to :group_type
end

class GroupType < ActiveRecord::Base
  belongs_to :project_strong
  has_many :player_strong
  has_many :competition_strong
end

class CompetitionStrong < ActiveRecord::Base
  belongs_to :project_strong
  belongs_to :group_type
  
end

class ResultStrong < ActiveRecord::Base
  belongs_to :competition_strong
  belongs_to :project_strong
  belongs_to :player_strong
end

class ProjectStrong < ActiveRecord::Base
  has_one :user
  has_many :player_strong
  has_many :group_type
  has_many :competition_strong
  has_many :result_strong
  
end

class User < ActiveRecord::Base
  has_many :project_strong
end

Jeżeli można prosić o wyjaśnienie jak relacje powinny wyglądać i dlaczego tak a nie inaczej będę bardzo wdzięczny. Z góry dziękuję za wszelkie sugestie i odpowiedzi.
Serdecznie pozdrawiam.
P.S Kod który pisałem może być niepoprawny co do nazw/itd. Chodzi mi tu tylko o asocjacje.(np czy ślepo patrzeć, że np.: jeżeli tabela ma jakiś klucz obcy to od razy belongs_to czy nie do końca.Albo powinienem używać :throught => ? )