Skip to content

Instantly share code, notes, and snippets.

@abhionlyone
Created May 3, 2019 07:06
Show Gist options
  • Save abhionlyone/84dec0aa7a5d30b9e2bc6d7bd2094f20 to your computer and use it in GitHub Desktop.
Save abhionlyone/84dec0aa7a5d30b9e2bc6d7bd2094f20 to your computer and use it in GitHub Desktop.
Rails includes for nested active-record associations
# https://stackoverflow.com/questions/24397640/rails-nested-includes-on-active-records
# I believe the following should work for you.
Event.includes(users: :profile)
# If you want to include an association (we'll call it C) of an already included association (we'll call it B), you'd use the syntax above. However, if you'd like to include D as well, which is also an association of B, that's when you'd use the array as given in the example in the Rails Guide.
A.includes(bees: [:cees, :dees])
# You could continue to nest includes like that (if you actually need to). Say that A is also associated with Z, and that C is associated to E and F.
A.includes( { bees: [ { cees: [:ees, :effs] }, :dees] }, :zees)
# And for good fun, we'll also say that E is associated to J and X, and that D is associated to Y.
A.includes( { bees: [ { cees: [ { ees: [:jays, :exes] }, :effs] }, { dees: :wise } ] }, :zees)
@joshuapinter
Copy link

This was helpful, thanks. One thing I needed was wrapping the nested items in curly braces { bees: ... } when combining them with non-nested routes :zees. Otherwise you get a syntax error.

@abhilashiig
Copy link

@joshuapinter I'm glad it helped! :) I almost forgot I had this gist.

@joshuapinter
Copy link

@abhilashiig After 5 years, I don't doubt it! That's the beauty of sharing your knowledge and experience on the internet, though. Thanks again. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment