rubyforgood/playtime

Use slugs instead of ids in the wishlist urls

Opened this issue · 3 comments

Right now, our wishlist urls look like this: /wishlists/1. URLs are part of the user interface and ids don't make for a great UI; let's make them more like this: /wishlists/dc-general!

The minimum requirements for this issue are:

  • URLs should be slug-based instead of id-based
  • The slug should be automatically generated based on the name
  • The slug should update if the wishlist name updates
  • The slug (re-)generation should be fully tested
  • Everything should be indexed appropriately

I'd like to give this a shot!

@leesharma Does it matter if it is custom or uses a gem?

@reneesandefur Awesome! It looks like you've gotten started, but here's an answer anyway: gems are fine as long as they're good quality and there's a reason to use them. 🙂

If you add a gem, it should have decent code quality, be tested, and (preferably) be pretty common. It should also be proportional to the problem: e.g. adding a giant state machine gem to avoid a small amount of hand-written code wouldn't be worth it.

For this issue, either method (custom made or friendly_id) would work, though I'd prefer custom; friendly_id looks a bit bloated for the task at hand.