2017-03-03 8 views
3

私は、このようなレシピモデルにActiveRecordスコープメソッドを持っています。レシピはuser_recipesに表示された回数に基づいてrecipe_id => frequencyを含むハッシュを返す結合テーブルに基づいて頻度でActiveRecordオブジェクトのリストを取得する方法

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

は、テーブルを結合します。

私が本当に好きなのは、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

関連する問題