mongoid-slug icon indicating copy to clipboard operation
mongoid-slug copied to clipboard

#slug should not default to _id.to_s

Open johnnyshields opened this issue 4 years ago • 3 comments

#slug should not default to _id.to_s. This is inconsistent with the rest of the gem:

  • _slugs does not contain _id.to_s
  • clear_slug! sets _slugs to [], so #slug will return nil in this case
  • it will be overwritten when saving
  • before saving, one would expect both slug and _slugs to be nil

johnnyshields avatar Aug 04 '21 15:08 johnnyshields

Ooooof I know for sure that Artsy relies on the fact that slugs default to ID, and aren't nil. This is a massive breaking change, isn't it?

dblock avatar Aug 09 '21 12:08 dblock

@dblock we should make this behavior configurable. As noted above, its inconsistent. A "never touched" new model will have slug default to ID, but once you call clear_slug! the slug value becomes nil. I can investigate further on a way to preserve the behavior for Artsy.

johnnyshields avatar Aug 09 '21 14:08 johnnyshields

@dblock we should make this behavior configurable. As noted above, its inconsistent. A "never touched" new model will have slug default to ID, but once you call clear_slug! the slug value becomes nil.

I actually don't think it's inconsistent, but can be misinterpreted. Don't you want to clear the slug on clear_slug!? Maybe we need a clear_slug_and_set_to_default!?

I can investigate further on a way to preserve the behavior for Artsy.

Sounds good. It should be backwards compatible or we need to bump major and document the breaking change, all while allowing the functionality to exist.

dblock avatar Aug 10 '21 16:08 dblock