beteiligt habe ich diese Modelle bekamGeschwindigkeit erhöhen Rails Ansicht Erstellung, wenn mehrere Tabellen
class PlayersToTeam < ActiveRecord::Base
belongs_to :player
belongs_to :team
accepts_nested_attributes_for :player
end
class Player < ActiveRecord::Base
has_many :players_to_teams
has_many :teams, through: :players_to_teams
end
class Team < ActiveRecord::Base
has_many :players_to_teams
has_many :players, through: :players_to_teams
belongs_to :account
end
In meiner Show Ansicht für teams
zeige ich alle players
an diesem team
. Der Edit-Link geht tatsächlich die players_to_teams
Eintrag zu bearbeiten, also musste ich etwas wie folgt aus:
<% @team.players.each do |player| %>
<tr>
<td><%= player.FirstName %></td>
<td><%= player.LastName %></td>
<td><%= link_to "Edit", edit_players_to_team_path(player.players_to_teams.find_by_team_id(@team.id)) %></td>
</tr>
wo @team
als Team.find(params[:id])
definiert wurde. Das war SUPER langsam, und wenn man sich die Dev-Logs anschaut, war es, weil die db für jeden Spieler in der edit_players_to_team_path
Zeile mehrfach getroffen wurde (um den Spieler zu finden, dann den player_to_team, der den Anforderungen entsprach, vielleicht mehr?) . So
Ich schaltete es stattdessen den players_to team
Datensatz verwenden
<% @players_to_teams.each do |ptt| %>
<tr>
<td><%= ptt.player.FirstName %></td>
<td><%= ptt.player.LastName %></td>
<td><%= link_to "Edit", edit_players_to_team_path(ptt) %></td>
</tr>
<% end %>
wo @players_to_teams
-team.players_to_teams
in der Steuerung eqaul ist. Dies geht viel schneller, aber scheint immer noch die db für jede Zeile meiner Ansicht zu treffen.
Ich denke Team.find(params[:id])
gibt die players
oder players_to_teams
Datensätze, die mit dieser team
verbunden sind, nicht zurück. Gibt es eine Möglichkeit, dass ich diese Assoziationen einschließen kann, so dass ein Aufruf an Team.find(params[:id])
ein Objekt mit Verweisen auf die player
und player_to_teams
verknüpften Datensätze zurückgibt, so dass die db nur einmal getroffen wird?