【问题标题】:rails force execution of SQL query in where clauserails 强制在 where 子句中执行 SQL 查询
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 1970-01-01
      相关资源
      最近更新 更多