0

Ich beginne gerade mit RoR so nackt mit mir, wenn ich Dinge falsch nenne.Wie man einen Datensatz aus einer tief verschachtelten Assoziation holt?

Ich habe diese 3 Modelle zum Beispiel. Vorstand, LKW, Fahrer.

Here's a sketch of what I have

Truck viele Fahrer und Fahrer gehört LKW.

Dann habe ich ein Brett, hat eine Sammlung von Lastwagen.

Was ich nicht herausfinden kann, ist, wie man Fahrerrekord am vorderen Ende durch das Brett und den Lastwagen holt.

Ich habe @boards = Board.all

Aber ich kann diese (in jedem Block) board.truck.driver.first_name nicht. Wie kann ich den Fahrer erreichen, der zum LKW gehört?

Lassen Sie mich wissen, wenn Sie mehr Informationen brauchen, danke!

Antwort

1

Sie machen es falsch !. Als LKW viele Fahrer hat, wird dies nicht funktionieren board.truck.driver.first_name Sie sollten wie durch sie board.truck.drivers und do-Schleife unter

<% board.truck.drivers.each do |driver| %> 
    <%= driver.first_name %> 
<% end %> 
+1

Ich mag diesen Ansatz besser, ich müsste alle Fahrer des LKWs zeigen. Vielen Dank. –

1

Basierend auf dem, was Sie erwähnt haben, hat der LKW viele Treiber. Das bedeutet, dass jeder TRUCK eine Reihe von DRIVERS hat. Versuchen Sie etwas wie board.truck.drivers.first.first_name (vorausgesetzt, Sie wollen den ersten und derzeit einzigen Treiber).

+0

Yeah! Das war's. Was ich vermisst habe, ist das Verständnis, dass du '.first' nennen musst, um den Rekord tatsächlich zu holen? Danke für die Antwort. –

+0

Sie können auch ein '.where()' vor dem '.first' eingeben, wenn Sie basierend auf einem Datenbankfeld auswählen müssen, welcher Treiber angezeigt werden soll. –

0

können Sie auch eine durch die Verbindung definieren, so wird sich board.drivers eine gültige Sammlung

Class Board 
    has_many :trucks 
    has_many :drivers, through: :trucks 

Weitere Informationen finden Sie unter ActiveRecord::Associations.

Verwandte Themen