рельсы принудительно выполняют запрос SQL в предложении where - PullRequest
0 голосов
/ 19 июня 2020

это код, который у меня есть:

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 модели 1 в list_views.size, а затем в list_views.map {|list_view| list_view.list_id}.uniq

, если мы можем принудительно выполнить запрос в ListView.where(:user_id => current_user.id), тогда потребуется только один запрос к модели ListView ИЛИ, если каким-либо другим способом

как чтобы добиться этого ??

1 Ответ

0 голосов
/ 20 июня 2020

Нашел способ к этому. Мы можем использовать load: list_views = ListView.where(:user_id => current_user.id).load

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

...