Class: Workarea::Catalog::ProductPositions
- Inherits:
-
Object
- Object
- Workarea::Catalog::ProductPositions
- Defined in:
- app/models/workarea/catalog/product_positions.rb
Class Method Summary collapse
-
.find(product_id, categories: [], category_ids: []) ⇒ Hash
Provides output of a products position within a collection of categories.
Class Method Details
.find(product_id, categories: [], category_ids: []) ⇒ Hash
Provides output of a products position within a collection
of categories. Called with just product_id, will lookup and return
positions in all categories.
Optionally, pass in categories or category_ids and positions for
only these categories will be returned.
It can be useful for performance to pass categories in categories
and avoid the extra query.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'app/models/workarea/catalog/product_positions.rb', line 21 def find(product_id, categories: [], category_ids: []) categories = if categories.present? categories elsif category_ids.present? Category.any_in(id: category_ids).to_a else Category.any_in(product_ids: [product_id]).to_a end categories.reduce({}) do |positions, category| index = category.product_ids.index(product_id) next positions unless index.present? positions[category.id] = index positions end end |