Очевидно, что первое, что вы должны сделать, это не реализовывать код, который отображал бы сообщение You've been ignored!
. Это решает большую часть вашей проблемы.
Но вы должны быть немного осторожны. Есть более тонкая проблема - ваша система должна вести себя с точки зрения отправителя всеми способами, как если бы пользователь не нажал игнорировать. Это означает, что если отправитель отправляет второй запрос, и обычно ваша система говорит «Вы уже отправили запрос этому пользователю», она должна продолжать отображать это сообщение даже после того, как получатель проигнорировал первый запрос. Вы должны быть осторожны, чтобы не пропустить информацию путем изменения сообщений в ответ на событие, которое должно было быть приватным.
Ответ на комментарий:
Как вы думаете, лучше вообще не отправлять сообщение "Вы уже отправили запрос этому пользователю"?
Я думаю, что этот вопрос немного выходит за рамки этого вопроса и сам по себе является длительным обсуждением, поэтому я только затрону его здесь. Ответ зависит от того, как ваше приложение реализовано. Краткий ответ: ваше приложение должно помочь вашим пользователям и быть интуитивно понятным, поэтому, если сообщение помогает им, добавьте его.
Альтернативой является то, что запросы истекают автоматически через одну неделю, если нет ответа. По истечении текущего запроса вы можете разрешить пользователю сделать новый запрос. Возможно, вы захотите рассмотреть, если игнорирование запроса означает игнорирование только этого одного запроса или всех запросов от этого пользователя.
Я не особо задумывался о том, как вы будете различать, кто кого игнорирует в моей нынешней схеме.
Запросы на дружбу - это направленные отношения. У вас есть отправитель и получатель. С другой стороны, дружба обычно (но не всегда) считается ненаправленными отношениями. Запрос дружбы обычно сопровождается сообщением «Эй, помнишь меня? Мы встретились в баре прошлой ночью!». С другой стороны, у устоявшейся дружбы обычно нет сообщений, связанных с ней. Поэтому может иметь смысл хранить эти разные типы отношений в разных таблицах в вашей базе данных.