这是我拥有的代码:
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
模型进行单个查询,或者通过其他任何方式
如何实现??
答案 0 :(得分:0)
找到了解决之道。我们可以使用load
:
list_views = ListView.where(:user_id => current_user.id).load