2017-03-03 22 views
3

我的食譜模型中有一個ActiveRecord作用域方法,看起來像這樣。如何根據連接表按頻率獲取ActiveRecord對象列表

scope :most_popular, -> { joins(:user_recipes).group(:recipe_id).count } 

它返回基於配方出現在user_recipes的次數包含recipe_id => frequency散列連接表。

我真的很喜歡將實際配方對象替換爲recipe_id,這樣我就不必在顯示視圖時再次查詢數據庫。我已經嘗試了所有我能想到的東西。我覺得這應該是直截了當的,但我錯過了一些小細節。任何幫助將不勝感激。

回答

1

我認爲

scope :most_popular, -> { joins(:user_recipes).group(:recipe_id).order('count(recipe_id) desc') } 

應該做你想要

+0

這並返回我,我一直在尋找,但不是每一個配方項目的計數的配方對象,可惜的是什麼。本質上我喜歡它在我之前得到它的格式,而不是'recipe_id => count'我想'recipe => count' – SYoung82

+0

@ SYoung82你要求的東西是不可能的,但你可以用數組來完成。所以''[[recipe_1,count],[recipe_2,count]]' – mmichael

+0

@mmichael這樣的東西我也會工作,對於如何完成它的任何建議? – SYoung82

相關問題