В этом упрощенном сценарии у меня есть модель под названием Post
Каждый пост имеет заголовок и постоянную ссылку
Постоянная ссылка используетсяв URL - то есть http://mysite.com/blog/permalink
Перед созданием сообщения обратный вызов устанавливает постоянную ссылку, совпадающую с названием
Я проверяюуникальность каждого заголовка, но я не проверяю уникальность постоянной ссылки по трем причинам:
- постоянная ссылка равна заголовку, который уже был проверен для уникальности
- пользователейне имеют понятия о постоянной ссылке, так как их никогда не просят ввести, поэтому, когда они получают сообщение о том, что постоянная ссылка должна быть уникальной, они не имеют ни малейшего представления о том, что это означает
- i 'Используя mongoid для ORM, постоянная ссылка является ключом для каждого сообщения, и mongoid, похоже, не позволяет вам модифицировать ключ
Теперь представьте себе следующий сценарий:
Пользователь создает сообщениезаголовок "привет", а URL-адрес - http://mysite.com/blog/hello
Пользователь меняет заголовок на "до свидания", но постоянная ссылка остается прежней, поскольку она неизменна по своему замыслу.Это хорошо, это то, что я хочу, и помогает предотвратить ссылочную гниль.
Затем пользователь создает новое сообщение под названием "привет", которое не проходит проверки, так как мы изменилизаголовок первого сообщения уже
Проблема здесь в том, что теперь у нас есть два сообщения с одинаковым URL благодаря нашему обратному вызову before_create.
Как я уже сказал,Я не хочу проверять уникальность постоянной ссылки, так как пользователь в вышеупомянутом scanrio, при создании вторых сообщений получит ошибку «постоянная ссылка должна быть уникальной», и я просто знаю, что это их запутает
Я думал, есть ли валидация или метод, который позволяет мне запретить пользователю создавать пост, заголовок которого равен существующей постоянной ссылке?
Если все остальное не сработает, тогда я простопроверить уникальность постоянной ссылки и выписать действительно длинное сообщение об ошибке проверки, в котором подробно описывается, что такое постоянная ссылка и почему она не считается уникальной
Что нужно учитывать при создании веб-сайтов, что делать