Thank you Ariel, I'll look into it! Because right now I'm running each source_type query individually then concat-ing the results into a single array. Gets the job done, but it'd be nice to tackle it all in one fell swoop.
On Thursday, March 19, 2020 at 5:20:33 PM UTC-5, Ariel Juodziukynas wrote: > > I'm not sure if you can have all that with a single AR query, I think you > need a custom query (I would use a UNION query an I think AR doesn't > support that) > > El jue., 19 mar. 2020 a las 13:25, Blake LeBlanc (<blake....@gmail.com > <javascript:>>) escribió: > >> When dealing with polymorphic associations, is it possible to have a >> has_many through query that pulls in ALL available source_types? >> >> My understanding so far is that each source type needs its own query >> method, as I show here in the Image model >> >> **image.rb** >> ``` >> has_many :image_tags >> has_many :tags, through: :image_tags, source: :taggable, source_type: >> 'Tag' >> has_many :people, through: :image_tags, source: :taggable, source_type: >> 'Person' >> has_many :businesses, through: :image_tags, source: :taggable, >> source_type: 'Business' >> ... >> ``` >> >> **tag.rb** >> ``` >> has_many :image_tags, as: :taggable >> has_many :images, through: :image_tags >> ``` >> >> **image_tag.rb** >> >> ``` >> belongs_to :image >> belongs_to :taggable, polymorphic: true >> >> def build_taggable(params) >> self.taggable = taggable_type.constantize.new(params) >> end >> ``` >> >> What I'd like to be able to do, however, is create one query method that >> pulls in all associated records regardless of what source_type they might >> belong to. >> >> Just thinking out loud, would that likely involve creating some sort of >> raw SQL join that acts directly on the ImageTags table? Or is there a more >> Railsy/ActiveRecordy way of approaching it? >> >> Thank you in advance for any help or insights! >> -Blake >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Ruby on Rails: Talk" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to rubyonra...@googlegroups.com <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/rubyonrails-talk/c537e34b-2d49-4e30-a197-2668fb773f99%40googlegroups.com >> >> <https://groups.google.com/d/msgid/rubyonrails-talk/c537e34b-2d49-4e30-a197-2668fb773f99%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/bfc6e653-b594-411f-91c6-676b7dc4f9e9%40googlegroups.com.