Earlier, slugs were generated in a loop, trying different suffixes like:
title_slug = title.parameterize
"#{title_slug}-#{i}"
Each iteration queried the database to check uniqueness:
Task.exists?(slug: slug_candidate)
⚠️ Problem: Expensive for large datasets—hundreds of DB calls.
Instead of checking every possible slug, fetch all existing similar slugs with one query:
# syntax
table_name.where("column_name LIKE ?", pattern)
title_slug = title.parameterize
count = Task.where("slug LIKE ?", "#{title_slug}%").size
Then assign:
slug = count.positive? ? "#{title_slug}-#{count + 1}" : title_slug
✅ Only one query, avoids N iterations.
buying, buying-2, buying-3buying-2 deleted