Yea, thanks for the feedback. I ended up with
Video.where(['genres.name = ?', 'Acoustic']).includes({:artist =>
{:user => :genre}}) which seems to workOn Oct 9, 3:00 am, Rob Biedenharn <[email protected]> wrote: > On Oct 8, 2010, at 2:06 PM, Robert Walker wrote: > > > > > Christian Fazzini wrote: > >> The following SQL: > > >> select * from medias m > >> left join artists a on a.id = m.artist_id > >> left join users u on u.id = a.user_id > >> left join genres g on g.id = u.genre_id > >> where g.name = 'Acoustic' > > >> is the equivalent to (which works): > > >> Video.find(:all, :conditions => ['genres.name = ?', > >> 'Acoustic'], :include => {:artist => {:user => :genre}}) > > >> However, I know that the rails 3 active record query uses > >> the .where() > >> clause. How can I convert the above to something like: > > >> Song.where({:genre => 'Acoustic', :include => {:artist => {:user > >> => :genre}}}) <==== Does NOT work > > > Song.where({ :genre => 'Acoustic' }).includes({ :artist => { :user => > > :genre }}) > > I think that's going to try to "WHERE medias.genre = 'Acoustic'" > > Perhaps: > .where(['genres.name = ?', 'Acoustic']) > > (guessing that both Song and Video are STI subclasses of Media or else > you've omitted some structure that might affect the answer(s) that > you'll receive) > > -Rob > > Rob Biedenharn > [email protected] http://AgileConsultingLLC.com/ > [email protected] http://GaslightSoftware.com/ -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

