2016-05-14 8 views
1

Ich lerne Rubin auf Schienen und habe ein aktives Rekordproblem, das ich nicht lösen konnte. Ich versuche, vier Tabellen zusammen zu verbinden und Daten von ihnen anzuzeigen.Schienen, aktive Aufzeichnung. Ich nehme vier Tische zusammen

Ich habe bestätigt, dass mein Datenbankschema korrekt ist, indem Sie die folgende SQL-Formatabfrage ausführen. Es gibt die Daten zurück, von denen ich es erwarte.

select * from sailings 
INNER JOIN travelling_parties on sailings.id = travelling_parties.sailing_id 
INNER JOIN party_registers on travelling_parties.id = party_registers.travelling_party_id 
inner JOIN users on party_registers.user_id = users.id 
where users.id = 8 

Nachdem durch die großen docs auf guides.rubyonrails.org lesen, bin ich immer noch nicht in der Lage, die Lösung zu finden. Die folgende Abfrage ist, was ich in meinem Controller gefunden habe, aber es scheint nicht zurückzukehren, was ich brauche.

@sailing = Sailing.joins(:travelling_parties => [{:party_registers => :user}]) 

Ich würde mich über jeden freuen, der mich in die richtige Richtung lenken könnte.

Danke

EDIT 1: Hier sind meine Modelle. Ich versuche, user.id = current_user.id zu überprüfen und Daten darauf anzuzeigen.

class Sailing 
    has_many :travelling_parties 
end 

class TravelingParty 
    has_many :party_registers 
    has_many :users, through: :party_registers 
end 

class PartyRegister 
    belongs_to :user 
    belongs_to :travelling_party 
end 

class User 
    has_many :party_registers 
    has_many :travelling_parties, through: :party_registers 
end 

EDIT 2: Die folgende Abfrage gab mir meine beabsichtigten Ergebnisse

@sailing = Sailing.joins (: travelling_parties => {: party_registers =>: user}). Wo ("users.id" => current_user.id)

Danke für die Antworten.

+1

kann u yr Modelle veröffentlichen? auch was genau wollen von Benutzer Tabelle zurückkehren? – 7urkm3n

Antwort

0

Ihre Antwort ist nahe zu unter der Annahme, dass Sie die Zuordnungen definiert haben.

class Sailing 
    belongs_to :traveling_party 
end 

class TravelingParty 
    belongs_to :party_register 
end 

class PartyRegister 
    belongs_to :user 
end 

Die

@sailing = Sailing.joins(:travelling_parties => {:party_registers => :user})

+0

Ich habe 'Klasse Sailling has_many: travelling_parties, Klasse TravelingParty has_many: party_registers has_many: Benutzer, durch:: party_registers, Klasse PartyRegister gehört zu: user origs_to: travelling_party' – Aptorian

Verwandte Themen