id
gospodarz_id referense z druzyny(id)
przeciwnik_id referense z druzyny(id)
czy da się pobierać tylko z jednej tabeli druzyny gospodarza_id i przeniwnika_id tak żeby dało się to wyświetlić w widoku ?
pytam bo mi się to nie udaje.
A jak przeglądam tutki to zwykle wystepuje taki uklad, ze ten powyzszy przyklad wykladal by tak:
tabela gospodarz:
id
nazwa
tabela przeciwnik:
id
nazwa
tabela spotkanie:
id
przeciwnik_id
gospodarz_id
i to jest dla mnie sprawa jasna, tylko, że w tabelach gospodarz i przeciwnik to w zasadzie te same drużyny więc lepiej jakby była jednak tabela jak powyżej.
Jeżeli ktoś coś zrozumiał z tego to proszę o odpowiedź.
No widzisz, poprawiam kod w jednym miejscu, a zostawiam błąd w innym. Ale faktycznie, jeśli sam tego nie wyłapałeś po wklejeniu kod i zobaczeniu błędów interpretera, to skup się póki co może na samym Rubym. Szkoda nerwów sobie szarpać.
Tpl, poznaj może Rubiego i Railsy trochę lepiej - zwłaszcza dokumentację do ActiveRecord i relacji. Bo jeśli nie wyłapałeś od ręki błędów wręcz “ortograficznych” w kodzie Radarka (wysypiaj się, człowieku! ), to znaczy że trochę jeszcze za słabo z teorią
Więc sprawa wygląda tak, że przygoda z ruby on rails zaczęła się tydzień temu, nie programowałem nigdy w samym rubym. Przerobiłem kilka tutoriali i na ich wzór chciałem coś sobie stworzyć, ale jeżeli wykracza coś poza to co jest w tutorialach głównie dla początkujących to są schody nie do przeskoczenia dla mnie. Poza tym wszystko w zasadzie co może pomóc początkującemu opiera się na na wersji railsów 1.x, (tak jak książka którą nabyłem: Ruby on rails od podstaw, Holznera). Więc w zasadzie nieźle się musiałem nagimnastykować, żeby coś zadziałało. Dla dla znających railsów - zmiany kosmetyczne, ale dla kogoś kto pierwszy raz ma z tym styczność przepaść
Wywołujesz metodę “nazwisko” na obiekcie nil. Czyli game.sedziaglowny zwraca nil dla któregoś obiektu iteracji. Jeśli pozwalasz na taką możliwość (np mecz odbył się bez sędziego głównego bo dostał w łapę i zapomniał przyjść ) to musisz sprawdzić to w widoku. Jeśli nie dopuszczasz takiej możliwości to dodaj walidację tego atrybutu w klasie Game. Możesz także dodać obsługę klucza obcego (jeśli używasz mysql to pamiętaj że MyISAM nie obsługuje kluczy obcych).
A za mieszanie nazw polskich i angielskich jakbym mógł to byś bana dostał, ale nie na to forum tylko w ogóle na programowanie. Czy nie czujesz jak to okropnie wygląda?:>
Na marginesie: jak wklejasz kod to oznacz go przez znacznik [ code=ruby ] (bez spacji oczywiście)
Więc jeszcze jedna relacja z którą nie mogę dać sobie rady
układ jest taki:
tabela1
id
name
tabela2
id
match_id
home_id
away_id
tabela3
id
match_id
z listy rozwijanej chce pobrać id z tabeli2 i zapisać jako match_id w tabeli3. To tam nie problem, ale problem jest żeby na tej liście rozwijanej pojawiały się home_id + away_id, których wartość jest pobierana z tabeli 1 jako name.
Jeśli wklejasz opisy tabel to fajnie żeby były prostsze w odbiorze (‘desc tabela’ w mysql np). Poza tym nie ułatwiasz zrozumienia problemu jeśli usuwasz oryginalne nazwy i zastępujesz je tabela{1,2,3}.
Domyślam się, że home_id i away_id to klucze odonoszące się do tabela1. Tam gdzie generujesz opcje dla selecta podaj taką tablicę:
[quote=radarek]Jeśli wklejasz opisy tabel to fajnie żeby były prostsze w odbiorze (‘desc tabela’ w mysql np). Poza tym nie ułatwiasz zrozumienia problemu jeśli usuwasz oryginalne nazwy i zastępujesz je tabela{1,2,3}.
Domyślam się, że home_id i away_id to klucze odonoszące się do tabela1. Tam gdzie generujesz opcje dla selecta podaj taką tablicę:
:include jest by zapobiec efektowi N+1 zapytań.[/quote]
dziekuje, a jeśli chodzi o nazwy tabel to mam je jeszcze po polskiemu wiec, żeby nie drażnić niektórych to tak to zapisałem.
[quote=miras]class User < ActiveRecord::Base
has_one :address, :class_name => :address, :foreign_key => :user_id
end
W Address nie mam żadnych wpisów
Jak ma być właściwie skonstruowana relacja by pojawiły się klucze obce?
Migracja przechodzi ok, ale w bazie nie widać, żadnych kluczy obcych[/quote]
“Definiowanie” kluczy obcych odbywa sie przy tworzeniu struktury bazy.
To ze napiszesz w modelu has_many, czy has_one mowi Railsom gdzie znajduja sie klucze i jak z nich korzystac.
mysql>[/code]
Klucze obce poawią się dopiero kiedy wpisuję z palca w migracji
execute "alter table addresses add constraint fk_address_users
foreign key (user_id) references users(id)"
Cały czas wydawało mi się, że po to są relację w modelach, żeby nie trzeba było wpisywać SQLa w migracjach, a u mnie to wogóle nie działa. Piszę w Netbeans 6.0RC1. Rails 1.25, Ruby versoin 1,85(java). rails 1.25 dlatego, że iele materiałów i książek jest o tej wersji.