Yea, thanks for the feedback. I ended up with
Video.where(['genres.name = ?', 'Acoustic']).includes({:artist =>
{:user => :genre}}) which seems to work

On 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.

Reply via email to