2012-04-15 3 views
0

Ich bin neu in Schienen und versuche zu sehen, ob es eine effizientere Möglichkeit gibt, Standorte auf der Grundlage eines Felds zu finden, das in dem Verbindungsobjekt festgelegt ist. Die Beziehung ist, dass Ereignisse viele Orte durch events_locations haben. Hier ist ein vereinfachtes Beispiel:bessere Möglichkeit, Datensätze auf der Grundlage von Junction-Objekt-Feld zu finden?

@locations=[] 
events_locations = @event.events_locations.where(:fieldvalue=>1) 
events_locations.each do |el| 
    @locations<<Location.find(el.location_id) 
end 

Es scheint verschwenderisch und könnte eine Menge Anfragen generieren. Gibt es einen besseren Weg?

Antwort

2

Ich denke, fieldvalue ist ein Feld von events_locations, dann

class Event 
    has_and_belongs_to_many :locations 
end 

@locations = @event.locations.where(events_locations: {fieldvalue: 1}) 
+0

Ihre Vermutung war richtig, danke! Kannst du irgendwelche guten Seiten empfehlen, auf denen ich Schnipsel wie diese finde? – turbo2oh

+0

Haben Sie den Rails Guide gelesen? http://guides.rubyonrails.org/association_basics.html – Yanhao

Verwandte Themen