Class: Workarea::Recommendation::UserActivityBased
- Inherits:
-
Object
- Object
- Workarea::Recommendation::UserActivityBased
- Defined in:
- app/queries/workarea/recommendation/user_activity_based.rb
Instance Method Summary collapse
-
#initialize(user_activity) ⇒ UserActivityBased
constructor
A new instance of UserActivityBased.
- #max_results ⇒ Object
- #popular_product_ids ⇒ Object
- #related_product_ids ⇒ Object
- #results ⇒ Object
Constructor Details
#initialize(user_activity) ⇒ UserActivityBased
Returns a new instance of UserActivityBased.
4 5 6 |
# File 'app/queries/workarea/recommendation/user_activity_based.rb', line 4 def initialize(user_activity) @user_activity = user_activity end |
Instance Method Details
#max_results ⇒ Object
16 17 18 19 |
# File 'app/queries/workarea/recommendation/user_activity_based.rb', line 16 def max_results # accommodate some missing or undisplayable products Workarea.config.per_page end |
#popular_product_ids ⇒ Object
21 22 23 24 25 26 27 |
# File 'app/queries/workarea/recommendation/user_activity_based.rb', line 21 def popular_product_ids Insights::TopProducts .current .results .map { |r| r['product_id'] } .take(max_results) end |
#related_product_ids ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'app/queries/workarea/recommendation/user_activity_based.rb', line 29 def query = Workarea::Search::.new( product_ids: @user_activity.product_ids, category_ids: @user_activity.category_ids, exclude_product_ids: @user_activity.product_ids ) query.results.map { |r| r[:catalog_id] } end |
#results ⇒ Object
8 9 10 11 12 13 14 |
# File 'app/queries/workarea/recommendation/user_activity_based.rb', line 8 def results if @user_activity.product_ids.blank? && @user_activity.category_ids.blank? popular_product_ids.take(max_results) else .take(max_results) end end |