如何根据连接表按频率获取ActiveRecord对象列表

时间:2017-03-03 17:53:53

标签: ruby-on-rails ruby activerecord

我的Recipe模型中有一个ActiveRecord范围方法,如下所示。

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

根据配方在user_recipes连接表中出现的次数返回包含recipe_id => frequency的哈希值。

我真正喜欢的是获取实际的配方对象来代替recipe_id,以便在我的视图中显示时不必再次查询数据库。我已经尝试了大部分我能想到的东西。我觉得这应该是直截了当的,但我错过了一些小细节。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为

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

应该做你想做的事