Szyny - zagnieżdżone dołączenia w aktywnych rekordach?
166
Mam listę wydarzeń, które pobieram. Próbuję uwzględnić każdego użytkownika związanego z tym wydarzeniem i każdy profil powiązany z każdym użytkownikiem. Użytkownicy są włączani, ale nie ich profile.
Jeśli chcesz dołączyć asocjację (nazwijmy ją C) już zawartej asocjacji (nazwiemy ją B), użyj powyższej składni. Jeśli jednak chciałbyś dołączyć również D, które jest również asocjacją B, wtedy użyjesz tablicy, jak podano w przykładzie w Rails Guide .
A.includes(bees:[:cees,:dees])
Możesz kontynuować zagnieżdżanie takich elementów (jeśli rzeczywiście potrzebujesz). Powiedz, że A jest również powiązane z Z, a C jest powiązane z E i F.
Jak dodałbyś warunki dla dołączonych modułów ..? :)
Arup Rakshit
1
jak dodać tam zamówienie?
Florian Widtmann
6
To jedna z tych magicznych odpowiedzi, które znajdowałem wiele razy w odstępie lat i za każdym razem ratują mi tyłek. Tak powinny wyglądać dokumenty
Andrzej
2
Aby uczynić ten przewodnik najbardziej wyczerpującym: A.includes( { bees: { cees: {:dees, :ees} } })- dla rosyjskiej konstrukcji przypominającej lalkę (tj. A zawiera b, które obejmuje c ... i tak dalej)
A.includes( { bees: { cees: {:dees, :ees} } })
- dla rosyjskiej konstrukcji przypominającej lalkę (tj. A zawiera b, które obejmuje c ... i tak dalej)A.includes(bees: :cees).where(bees: { cees: { flagged: false }}).order("a.bees DESC").order("a.cees ASC")
Jeśli ktoś wykonuje
respond_to
blok w celu wygenerowania zagnieżdżonego pliku JSON, możesz zrobić coś takiego:źródło
as_json
- w przeciwnym razie renderuje ciąg JSON.Proszę zapoznać się z rozwiązaniem Joe Kennedy'ego.
Oto bardziej czytelny przykład (dla mnie w przyszłości).
źródło