Rails - zagnieżdżone includes na aktywnych rekordach?
Mam listę zdarzeń, które pobieram. Staram się uwzględnić każdego użytkownika powiązanego z tym wydarzeniem i każdego profilu powiązanego z każdym użytkownikiem. Użytkownicy są włączani, ale nie ich profile.
Jak mam to zrobić
Event.includes(:users [{profile:}])
Dokumenty nie wydają się być jasne: http://guides.rubyonrails.org/active_record_querying.html
2 answers
Uważam, że poniższe powinny działać dla Ciebie.
Event.includes(users: :profile)
Jeśli chcesz dołączyć asocjację (nazwiemy ją C) już włączonego asocjacji (nazwiemy ją B), użyj powyższej składni. Jednakże, jeśli chcesz dołączyć również D, które jest również asocjacją B, wtedy użyjesz tablicy podanej w przykładzie w Rails Guide .
A.includes(bees: [:cees, :dees])
Możesz nadal zagnieżdżać w ten sposób (Jeśli faktycznie musisz). Powiedzieć, że A jest również związane z, i że C jest związane z E i F.
A.includes( { bees: [ { cees: [:ees, :effs] }, :dees] }, :zees)
I dla dobrej zabawy, powiemy również, że E jest związane z J I X, a że D jest związane z Y.
A.includes( { bees: [ { cees: [ { ees: [:jays, :exes] }, :effs] }, { dees: :wise } ] }, :zees)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-22 23:26:36
Jeśli ktoś robi blok respond_to
, Aby wygenerować zagnieżdżony json, możesz zrobić coś w stylu:
respond_to do |f|
f.json do
render json: event.to_json(include: {users: {include: :profile} }), status: :ok
end
end
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-01 20:41:36