Witam,
zakladajac, ze mam takie polaczenia

jak rails rozwiazuja nazwy kluczy obcych jesli mam 2 tabela polaczone (podwojnie ze soba - jak na rysunku)
indeksy:
team_id i team_id1 wystarcza, czy musze w modelu pisac jeszcze cos typu foreign_key => team_id1
Jakies wskzowki?
Jeśli będziesz się trzymał konwencji, że nazwa klucza, to nazwa asocjacji z przyrostkiem id, to nie musisz podawać nazwy klucza w modelu, powinieneś za to utworzyć klucze w migracji:
[code=Ruby] create_table “games” do |t|
t.integer “first_team_id”
t.integer “second_team_id”,
end
add_index “games”, [“first_team_id”], :name => “fk_games_teams_first_team”
add_index “games”, [“second_team_id”], :name => “fk_games_teams_second_team”[/code]
I ponieważ nazwy asocjacji nie odpowiadają nazwom klas, zdefiniować klasę:
class Games < ActiveRecord::Base
belongs_to :first_team, :class_name => "Teams"
belongs_to :second_team, :class_name => "Teams"
end
Powinno zadziałać. Trochę więcej szczegółów:
http://apohllo.pl/guides/association_basics.html#_asocjacja_belongs_to
Dzieki wielkie,
jak tak zrobilem, to w bazie, tabela games mam teraz takie dziwne dodatkowe pole
#<ActiveRecord::ConnectionAdapters::TableDefinition:0x5aedee0>
czy wszystko OK?, tak ma byc?
jesli tak, to co to oznacza?
Ps. ta klase zdefiniowac mozna jako “game” zamiast “games”, czy to bedzie mialo znaczenie?
dobrze, a jak wyciagnac nazwy druzyn tego spotkania, ktore kryja sie pod “firts_team_id” i “second_team_id” tj.
jesli chce wyciagnac id to cos takiego
[code]
Team o id 1:
<%=h @game.first_team_id %>
Team o id 2:
<%=h @game.second_team_id %>
[/code]
a chcialbym wyciagac nazwe druzyny np poprzez select byloby to tak
[code]<%= select("game", "first_team_id", @teams.collect {|t| [ t.name, t.id ] } ) %>
<%= select(“game”, “second_team_id”, @teams.collect {|t| [ t.name, t.id ] } ) %>
[/code]
ale rzecz w tym, ze nie chce miec pola wyboru(select) … tylko same nazwy wyciagniete druzyny 1 i 2
i nie wiem jak do konca to zrobic??
zakladam, ze w akcji napisac odpowiednio
@teams = Team.find(:all, conditions => ?? )
Oczywiście powinno być Game zamiast Games, mój błąd.
Do nazw drużyny dobierasz się np:
<%= @game.first_team.name %>
<%= @game.second_team.name %>
dzieki raz jeszcze,
nie wiem co sie tak uparlem na te kontrolery przy wyciaganiu;/
ps. i tutaj tez bez ‘s’
belongs_to :xxx_team, :class_name => “Team”