Module: SpreeCmCommissioner::RouteOrderCountable
- Defined in:
- app/models/concerns/spree_cm_commissioner/route_order_countable.rb
Instance Method Summary collapse
- #increment_route_fulfilled_order_count ⇒ Object
- #increment_route_order_count ⇒ Object
- #preload_trip_ids ⇒ Object
-
#preload_trip_ids=(preload_trip_ids = []) ⇒ Object
Calling ‘.trip_ids` directly can cause many slow database queries (N+1 problem) every time `.should_update_trip_ids?` or `.preload_trip_ids` runs.
- #should_update_count? ⇒ Boolean
Instance Method Details
#increment_route_fulfilled_order_count ⇒ Object
7 8 9 10 11 |
# File 'app/models/concerns/spree_cm_commissioner/route_order_countable.rb', line 7 def increment_route_fulfilled_order_count return unless should_update_count? SpreeCmCommissioner::Transit::RouteFulfilledOrderCountIncrementerJob.perform_later(order_id: id) end |
#increment_route_order_count ⇒ Object
13 14 15 16 17 |
# File 'app/models/concerns/spree_cm_commissioner/route_order_countable.rb', line 13 def increment_route_order_count return unless should_update_count? SpreeCmCommissioner::Transit::RouteOrderCountIncrementerJob.perform_later(order_id: id) end |
#preload_trip_ids ⇒ Object
26 27 28 |
# File 'app/models/concerns/spree_cm_commissioner/route_order_countable.rb', line 26 def preload_trip_ids &.fetch('preload_trip_ids', []) || [] end |
#preload_trip_ids=(preload_trip_ids = []) ⇒ Object
Calling ‘.trip_ids` directly can cause many slow database queries (N+1 problem) every time `.should_update_trip_ids?` or `.preload_trip_ids` runs. To avoid this, we store a precomputed list of trip IDs in `private_metadata`.
22 23 24 |
# File 'app/models/concerns/spree_cm_commissioner/route_order_countable.rb', line 22 def preload_trip_ids=(preload_trip_ids = []) self. = ( || {}).merge('preload_trip_ids' => preload_trip_ids) end |
#should_update_count? ⇒ Boolean
3 4 5 |
# File 'app/models/concerns/spree_cm_commissioner/route_order_countable.rb', line 3 def should_update_count? preload_trip_ids.any? end |