В моем приложении в настоящее время я использую формы, которые позволяют вводить поля Title и Slug. Теперь я некоторое время боролся со слизняками, потому что никогда не могу решить раз и навсегда, как с ними справиться.
1) Сделать независимыми название и слизняк
Должен ли я разрешить пользователям вводить заголовок и слаг отдельно? Это то, что у меня было первым. У меня также была возможность, что если пользователь не введет Slug, он будет получен из заголовка. Если оба были введены, поле Slug имеет приоритет.
2) Извлекать слаг из заголовка, когда контент вставлен, вот и все для слага, больше никаких изменений
Затем я переключился только на поле Заголовок и извлек Slug из заголовка. При этом я обнаружил, что теперь я должен изменить все формы, которые позволили пользователю ввести слаг. Этот способ также запрещает пользователям менять слагов - они могут изменять заголовок, но это не влияет на слаг. Вы можете думать об этом, как Slug - уникальный идентификатор.
3) Теперь я снова думаю о том, чтобы разрешить пользователям менять слаг
Хотя я не думаю, что это все так полезно. Сколько раз контент, который кто-то уже добавил, потратил время на его написание, даже требует смены заголовка или слага? Я не думаю, что это так много раз.
Самая большая проблема с 3-м вариантом заключается в том, что если я использую Slugs в качестве идентификаторов, мне нужно обновить ссылку повсюду, когда Slug изменяется. Или ведите таблицу, которая будет содержать некоторую историю истории слизней.
Что вы думаете об этих, надеюсь, верных вопросах?
Если у кого-то есть образец дизайна БД для этого, будет полезно, если вы поделитесь им здесь.