Pytanie o relacje has_many, :through czy has_and_belongs_to_many

witam tutaj mam taki przykladowy schemat relacji

a tutaj pytania i modele

http://pastie.org/438506

  1. Pytania lepiej wkleić na forum, nieładnie odsyłać do zewnętrznego linka z własnym problemem. To forum także ma kolorowanie składni, więc nie ma co używać pastie i innych gistów.
  2. Zdecydowanie has_many :through, ponieważ u Ciebie złączenie StatisticPlayer jest pełnoprawnym modelem biznesowym z własnymi danymi (punkty, straty)
  3. Dobrze zamodelowałeś i wpisałeś, ale…
  4. Generalnie konwencja railsowa dla nazywania kluczy obcych to nazwa_modelu_w_liczbie_pojedynczej_id, więc railsy po StatisticPlayer i jego asocjacjach spodziewają się pól player_id i game_id. Oczywiście można to nadpisać przez parametr :foreign_key.
  1. nie powtorzy sie,
  2. dzieki za dobra rade
  3. ale
  4. tak sie trzymam tego z tym game_ id i player_id, tylko w modelu dbdesigner sam mi ‘s’ dodaje przy tych kluczach obcych.
    moglbym nazwac tabelki w l. poj., klucze bylyby dobre,ale nazewnictwo tabel nie byloby w konwencji rails;)

Dzieki

Podziwiam Cię :slight_smile: w sumie w Rails przy pracy na zwykłych modelach AR nie używałbym dbdesignera ani pochodnych. Rozpisuje sobie wszystko tylko przez wartości jakie ma zwracać model i metody modelu. Reszta automatyczna, np. przez references:

[code=ruby]class StatisticPlayer < ActiveRecord::Base

belongs_to :game
belongs_to :player
belongs_to :players_statistic
belongs_to :game_statistic

end[/code]

[code=ruby]class Player < ActiveRecord::Base

has_many :statistic_players
has_many :games, :through => :statistic_players, :as => :players_statistic

end[/code]

[code=ruby]class Game < ActiveRecord::Base

has_many :statistic_players
has_many :players, :through => :statistic_players, :as => :game_statistic

end[/code]

create_table :statistic_players do |t| t.references :game t.references :player t.references :players_statistic t.references :game_statistic t.timestamps end
Dlaczego projektujesz tak starannie te tabelki dla modeli?

edit: Ok głupie pytanie, nie spałem dwie noce :stuck_out_tongue: tudzież wolę łatwiejsze i bardziej obrazujące narzędzia, np: http://mindmeister.com/

dbdesigner uzylem tutaj tylko, aby zobrazowac relacje, aby nie bylo niedomowien (‘o co mi moze chodzic;)’ ). Z 3 mysli Tomash powiedzial, ze dobrze kombinuje, wiec sie ciesze:) Ty mi tuaj pokazales 4 mysl - na ktora nie wpadlem;)
ps. widze, ze dodales jeszcze stytstyki z meczu;]