Ich habe 2 Modelle: AvailableDates -> gehört zu: spec und Spec -> has_many: available_dates Jetzt habe ich eine Ansicht, wo ich Daten sowohl von Spec und AvailableDates anzeigen möchte Gleiches Attribut friend_id. Ich kann mit SQL tut dies, der gut arbeitet:Zeige Daten von 2 Modellen in einer Ansicht
@invitees = AvailableDate.find_by_sql "SELECT d.friend_id, s.first_name, s.last_name, s.gender, s.birthdate, s.occupation, s.country, s.city FROM available_dates d, specs s WHERE d.friend_id = s.friend_id AND d.city = 'London'
Die Ansicht wird wie folgt aussehen, mit Daten aus beiden Modellen:
<% @invitees.each do |invitee| %>
<tr>
<td><%=h invitee.first_name %></td>
<td><%=h invitee.last_name %></td>
<td><%=h invitee.gender %></td>
<td><%=h invitee.birthdate %></td>
</tr>
<% end %>
Dies ist jedoch nicht „Schienen wie“ fühlt, also möchte ich es auf diese Weise machen, während ich den Code in der Ansicht unverändert belasse:
@invitees = AvailableDate.find(:all, :conditions => ["country = ? and city = ? and start_date <= ? and end_date >= ?", country, city, date, date])
# Retrieve spec data for every matching invitee
@invitees.each do |invitee|
@spec = Spec.find(:first, :conditions => ["friend_id = ?", invitee.friend_id])
end
Hat jemand eine bessere Lösung? Vielen Dank!
Update: Ich habe das jetzt das funktioniert:
@invitees = Friend.find(:all, :include => [:available_date, :spec], :conditions => ["specs.country = ?", "United Kingdom"])
Aber es gibt mir nur Daten von Freund. Wie bekomme ich auch Daten aus dem zugehörigen available_date und der Spezifikation?
danke, ich recherchiert für: include und: Zustand und glaube, ich verstehe. Ich werde mit meiner Lösung zurückkommen. – John