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(metrics) ⇒ UserActivityBased
constructor
A new instance of UserActivityBased.
- #max_results ⇒ Object
- #popular_product_ids ⇒ Object
- #recent_category_ids ⇒ Object
- #recent_product_ids ⇒ Object
- #related_product_ids ⇒ Object
- #results ⇒ Object
Constructor Details
#initialize(metrics) ⇒ UserActivityBased
Returns a new instance of UserActivityBased.
4 5 6 |
# File 'app/queries/workarea/recommendation/user_activity_based.rb', line 4 def initialize(metrics) @metrics = metrics 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
29 30 31 32 33 34 35 |
# File 'app/queries/workarea/recommendation/user_activity_based.rb', line 29 def popular_product_ids Insights::TopProducts .current .results .map { |r| r['product_id'] } .take(max_results) end |
#recent_category_ids ⇒ Object
25 26 27 |
# File 'app/queries/workarea/recommendation/user_activity_based.rb', line 25 def recent_category_ids @metrics.viewed.recent_category_ids(unique: true) end |
#recent_product_ids ⇒ Object
21 22 23 |
# File 'app/queries/workarea/recommendation/user_activity_based.rb', line 21 def recent_product_ids @metrics.viewed.recent_product_ids(unique: true) end |
#related_product_ids ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'app/queries/workarea/recommendation/user_activity_based.rb', line 37 def query = Workarea::Search::RelatedProducts.new( product_ids: recent_product_ids, category_ids: recent_category_ids, exclude_product_ids: recent_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 recent_product_ids.blank? && recent_category_ids.blank? popular_product_ids.take(max_results) else .take(max_results) end end |