Rails在where子句中强制执行SQL查询

时间:2020-06-19 11:43:23

标签: ruby-on-rails-4 activerecord query-optimization

这是我拥有的代码:

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模型进行单个查询,或者通过其他任何方式

如何实现??

1 个答案:

答案 0 :(得分:0)

找到了解决之道。我们可以使用loadlist_views = ListView.where(:user_id => current_user.id).load

https://apidock.com/rails/ActiveRecord/Relation/load