【发布时间】:2020-06-19 11:43:23
【问题描述】:
这是我拥有的代码:
list_views = ListView.where(:user_id => current_user.id)
total_list_views = list_views.size
top_recommended_lists = recommendations_based_on_list_views(list_views, language_score_hash, level_score_hash, category_score_hash)
还有这个方法
def recommendations_based_on_list_views(list_views, language_score_hash, level_score_hash, category_score_hash)
viewed_lists_ids = list_views.map {|list_view| list_view.list_id}.uniq
....
问题在于这段代码 2 个查询在 ListView 模型上执行
一个在list_views.size,然后在list_views.map {|list_view| list_view.list_id}.uniq
如果我们可以在 ListView.where(:user_id => current_user.id) 强制执行查询,那么只需要对 ListView 模型的单个查询,或者如果有任何其他方式
如何做到这一点??
【问题讨论】:
标签: ruby-on-rails-4 activerecord query-optimization