Предполагается, что приложение rails имеет следующие модели song, play, radio_station:
песня has_many играет
play has_many radio_stations
radio_station имеет атрибут "call_sign"
Я хочу создать одну находку для Песни, которая возвратила бы мне все песни, где последняя игра (песни) была воспроизведена радиостанцией "WKRP"
Я мог бы сделать
найдено = []
Song.find (: all,: include => [{: plays => [: radio_station]}]). Each do | song |
найдено << song if song.plays.last.radio_station.call_sign == "WKRP"
конец </p>
но это будет означать, что все песни должны быть сначала извлечены из БД и зациклены ... что замедлится по мере сборки # песен и пьес.
Как я могу поместить это в одно условие поиска?
Кажется, что это то, что должно быть выполнимо - но я не могу понять, как, и я на самом деле не гуру SQL ...
и затем .. хотел бы втиснуть его в именованную область видимости, чтобы я мог назвать его так:
Song.find_all_last_played_at ( "WKRP")