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.
kann u yr Modelle veröffentlichen? auch was genau wollen von Benutzer Tabelle zurückkehren? – 7urkm3n