Какими способами я могу реализовать уведомления в приложении Rails? - PullRequest
1 голос
/ 08 февраля 2012

Простейшим примером здесь являются уведомления Facebook, например, когда кто-то публикует комментарий о вашем статусе, любит вашу фотографию или просто отправляет вам приглашение в какую-либо игру.

Каковы некоторые способыреализовать это в приложении Rails, чтобы уведомление отображалось пользователю только до тех пор, пока он его не прочитает, и, возможно, с возможностью читать его на разных платформах.

Я не говорю здесь о уведомления в режиме чата в реальном времени с использованием push-сообщений сервера, а скорее каким-либо способом показать пользователю, что произошло с момента его последнего посещения сайта.

Например, я прочитал статьюи я оставляю комментарий, а затем кто-то отвечает на него.В следующий раз, когда я войду в систему, я хочу видеть, что кто-то ответил на мой комментарий.

Одно из решений, которое приходит на ум, - это какая-то модель Notification, которая будет иметьread атрибута, и когда пользователь заходит на сайт, он отображает все уведомления, которые в данный момент не прочитаны.

Нет ли лучшего способа сделать это без использования реляционной базы данных?

Ответы [ 2 ]

8 голосов
/ 09 февраля 2012

Я использую для этого свою существующую модель User в виде сериализованного массива messages.

Добавьте столбец messages (тип TEXT) в таблицу пользователей с помощью миграции:

add_column :users, :messages, :text, :null => false, :default => "--- []"

Затем сериализуйте его в вашей user модели:

serialize :messages, Array

Теперь вы можете сделать это:

# Add messages
@user.messages.push "You have a new message!"

# Read messages
@user.messages # => ["You have a new message!"]

# Clear one message
@user.messages.delete_at(0)

# Clear all messages
@user.messages.clear

# Get message counts
@user.messages.empty? # => true
@user.messages.count  # => 0

Если вам нужны более подробные сообщения с несколькими параметрами (от, тема, важность), вы всегда можете вместо этого использовать хеш.

0 голосов
/ 08 февраля 2012

У меня есть модель оповещения на моем сайте. Когда что-то происходит, добавляется предупреждение, и другие пользователи видят предупреждение при входе в систему. Важно иметь поле отклонения, чтобы пользователь мог отклонить предупреждение, чтобы пользователь не видел одно и то же предупреждение снова и снова. Он также имеет поле области, поэтому вы можете подключить оповещение к определенной части веб-сайта, а также поле подробных ссылок, чтобы дать пользователю ссылку, по которой он может щелкнуть, чтобы посмотреть, что представляет собой оповещение.

...