2017-01-19 2 views
0

Stellenangebote passende haben, passende haben Zimmer, verfügen über Zimmer-Nachrichtenumfasst mit mehreren Ebenen ausländischer Tabellen

Ich brauche die offene Stellen zu erhalten, die die spezifischen Kriterien eines Anpassungsattribut folgen und dann filtern sie wieder basierend auf, ob sie Nachrichten von einem Mitarbeiter.

Vacancy.created_this_week 
.includes(:matchings, :rooms, :messages) 
.where(matchings: {state: ["applied", "accepted", "denied"]}) 
.where(messages: {from_employee: false}.count 

Obwohl ich erhalte folgend:

Can't join 'Vacancy' to association named 'rooms'; perhaps you misspelled it? 

verstehe ich die Assoziation auf einem passendes basiert aber wie sonst würde ich dies in einer Abfrage passen, da ich eine Menge an freien Stellen herauszufiltern müssen auch?

EDIT

Basierend auf einer Antwort unten I

.includes(matchings: { rooms: :messages }) 

versuchte Was mich

Can't join 'Matching' to association named 'room'; perhaps you misspelled it? 

Check Sanity gibt:

>> Matching.first.room.messages 
=> #<ActiveRecord::Associations::CollectionProxy []> 
+1

Haben Sie "has_many through" eingerichtet? –

Antwort

2

Versuchen Sie, die Includes im Hash-Format zu verschachteln:

.includes(matchings: { rooms: :messages }) 
+0

Kann nicht mit 'Zuordnung' zu Assoziation namens 'Räume' verknüpft werden; vielleicht hast du es falsch geschrieben? Auch mit 'Raum' versucht, da es nur einen Raum hat, bekomme ich den gleichen Fehler. Gesundheitsprüfung: >> Matching.first.room.messages => #