2013-01-11 65 views
5

在Rails應用程序中,我有三個模型(發佈,Shop :: Items和Directory :: Items)。每個模型都與其他模型(用戶,類別,城市...)有關係。所有這些信息我必須在主頁上顯示。它應該看起來像分頁的項目列表。我正在使用DB的postgres。
我們可以在控制器寫這樣的代碼:Rails應用程序。從幾個模型收集項目,並在主頁上顯示此分頁列表項目

@postings = Posting.includes(:category, :subcategory, :user, :city).all 
@directory_items = Directory::Item.includes(:category, :user, :city).all 
@shop_items = Shop::Item.includes(:category, :user, :city, :phone).all 

和排序這個結果。但這不是最好的方法。

第二種解決方案是編寫自定義查詢ommitting ActiveRecord。但是這個查詢真的很大,並且很難支持它(我們有很多連接)
對於最少量的數據庫查詢,最好的解決方案是什麼? (這是主頁,所以它應該工作得很快)。

+0

向我們展示一些代碼。 [你有什麼嘗試?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – weltschmerz

+0

我已經添加了一些想法如何實現。但我不喜歡這些解決方案。這就是爲什麼提問的原因。 – jizak

回答

2

here有一些解決方案不快。

或者,您可以使用sphinxthinking sphinx寶石。這樣它會快速和乾淨。

ThinkingSphinx.search classes: [Posting, Shop::Items, Directory::Items], page: params[:page] || 1, per_page: 10 
0

由於查詢將被緩存,只有排序需要時間。如果你不顯示太多的項目,開發人員的可讀性遠遠超過優化這個成本。如果性能確實是一個瓶頸,你總是可以做得更好,但是你仍然可以選擇使代碼過於複雜。

相關問題