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

Author: MattW., 2014-06-25

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)
 312
Author: Joe Kennedy,
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
 10
Author: Blaskovicz,
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