Class: OnlineMigrations::DataMigrations::BackfillItemLtreePaths
- Inherits:
-
OnlineMigrations::DataMigration
- Object
- OnlineMigrations::DataMigration
- OnlineMigrations::DataMigrations::BackfillItemLtreePaths
- Defined in:
- lib/online_migrations/data_migrations/backfill_item_ltree_paths.rb
Overview
Backfill ltree paths on items table.
Enqueued by: 20251205000003_enqueue_backfill_item_ltree_paths.rb
Populates:
- primary_pl_path_ids / primary_pl_path_slugs (from primary_product_line)
- all_pl_paths_ids (from all associated product_lines via item_product_lines)
- pc_path_ids / pc_path_slugs (from product_category)
Constant Summary collapse
- BATCH_SIZE =
Batch size.
1_000
Delegated Instance Attributes collapse
-
#count ⇒ Object
Alias for Item#count.
Instance Method Summary collapse
-
#collection ⇒ ActiveRecord::Batches::BatchEnumerator
Batches of Items.
-
#process(items) ⇒ void
Syncs ltree path columns per item.
Instance Method Details
#collection ⇒ ActiveRecord::Batches::BatchEnumerator
Returns batches of Items.
17 18 19 |
# File 'lib/online_migrations/data_migrations/backfill_item_ltree_paths.rb', line 17 def collection Item.in_batches(of: BATCH_SIZE) end |
#count ⇒ Object
Alias for Item#count
38 |
# File 'lib/online_migrations/data_migrations/backfill_item_ltree_paths.rb', line 38 delegate :count, to: :Item |
#process(items) ⇒ void
This method returns an undefined value.
Returns syncs ltree path columns per item.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/online_migrations/data_migrations/backfill_item_ltree_paths.rb', line 22 def process(items) items.each do |item| # Build the ltree paths without triggering callbacks item.sync_ltree_paths! # Update columns directly to avoid callbacks item.update_columns( primary_pl_path_ids: item.primary_pl_path_ids, primary_pl_path_slugs: item.primary_pl_path_slugs, all_pl_paths_ids: item.all_pl_paths_ids, pc_path_ids: item.pc_path_ids, pc_path_slugs: item.pc_path_slugs ) end end |