2017-02-08 3 views
0

Ich habe zwei Tabellen in zwei verschiedenen Datenbanken.Schienen kombinieren zwei verschiedene aktive Datensatzobjekte

Beispiel:

Benutzer in db1 mit Attributen user_id und Namen in db2

Audit Wohnsitz Wohnsitz mit Attributen id und user_id

User.find_by_sql("SELECT * FROM users") 

Audit.find_by_sql("SELECT * FROM audits") 

Wie kann ich Kombinieren Sie das Ergebnis dieser beiden Abfrageergebnisse basierend auf dem Benutzer _id

Erwartete Ausgabe rows =>User_id audit_id Name

+0

haben Sie Ergebnisse aus zwei verschiedenen Datenbanken erhalten? es ist dann einfach eine Art, ein Ergebnisobjekt zusammenzureißen –

Antwort

0

, wenn Sie dies in Ruby tun wollen könnten Sie einfach Mapping Sie Ihre Hash bauen kann

users = User.find_by_sql("SELECT * FROM users") 

audits = Audit.find_by_sql("SELECT * FROM audits") 

result = [] 
users.each do |u| 
    result << { 
    user_id: u.id, 
    name: u.name, 
    audits: audits.find_all { |a| a.user_id == u.id } 
    } 
end 

result 

# result will include all user audits 

in der Karte verwenden, mit dem, was Sie wollen

+0

Hier wird die Benutzervariable mit Audits gefüllt. Können Sie mir vorschlagen, wie Benutzer sowohl Benutzer als auch Benutzer auditieren können? –

+0

@SitharaSuresh siehe aktualisierten Code in der Antwort, das kann sein, was Sie suchen, wenn Sie es genau so sein wollen, wie Sie darauf hingewiesen haben, dann müssen Sie doppelte (verschachtelte) Iteration tun – mswiszcz

Verwandte Themen