2011-08-11 40 views
3

我正在重新開發一個網站,該網站在主頁上顯示5個最新新聞報道,但是,我只希望它顯示最近的5個故事在圖像表中至少有一個圖像。Ruby on Rails - 活動記錄查詢 - 返回僅包含圖片的項目

所以我的問題是,如何我修改了以下與圖像返回五條記錄:

@slider_stories = Story.published.all(:limit => 50, :include => [:images]) 
+0

Rails的第2版。 X? – fl00r

回答

1

類似的東西

@slider_stories = Story.published.all(:limit => 50, :include => [:images], :conditions => "DISTINCT(stories.id), stories.*, images.*") 

@slider_stories_ids = Image.all(:select => "DISTINCT(story_id)").map(&:story_id) 
@slider_stories = Story.published.all(:limit => 50, :include => [:images], :conditions => {:id => @lider_stories_ids}) 
+0

第一個給出了一個SQL無效組函數,因爲我相信內部連接,沒有得到第二個工作(返回空結果),但我相信我到達那裏。謝謝。 – Tom

+0

SELECT DISTINCT'stories'.id FROM'stories' LEFT OUTER JOIN'images' ON'images''item_id ='stories'.id AND' images''item_type ='Story'WHERE(COUNT(images.item_id)> 0 )AND('stories'.aasm_state' ='published')ORDER BY stories.created_at DESC LIMIT 5 – Tom

+0

@Tom,應該有'map':'@slider_stories_ids = Image.all(:select =>「DISTINCT(story_id )「)。map(&:story_id)' – fl00r