2010-11-16 2 views
0

У меня есть модель User. Приложение зарегистрировало пользователей и зарегистрированных исполнителей. Пользователь может быть идентифицирован как художник или зарегистрированный пользователь через модель ролей.Как бы вы проектировали/реализовали модель уведомления?

На моей странице учетной записи у меня есть раздел уведомлений.

Уведомления пользователей отличаются от уведомлений Artist.

Например. Зарегистрированный художник может установить следующие уведомления:

  • Напиши мне, когда пользователь любит мою картину
  • Напишите мне, когда комментарии пользователей на моей картине

Зарегистрированный пользователь может установить следующее уведомление:

  • Напишите мне, когда мои любимые художники вывешивают новые картины

Оба пользователя и художник может установить следующее уведомление:

  • по электронной почте мне, когда кто-то посылает мне приватное сообщение

Как бы вы идти о разработке этого?

ответ

0

Модель ролей? Я не настолько специализирован в ролях и останавливаю меня, если ошибаюсь, но я бы просто назначил role атрибутом модели user. Затем я разрешаю всем пользователям возможность иметь все уведомления, а в haml/html различать то, что они видят, исходя из их роли.

Так что ваш HAML бы сказать:

- if current_user.role?(artist) 
    = f.label 'Email me when a User likes my painting' 
    = f.select :notification_option 
- if current_user.role?(user) 
    = f.label 'Email me when my favorite artists posts new paintings' 
    = f.select :notification_option 
= f.label 'Email me when someone sends me a private message' 
= f.select :notification_option 
+0

интересное решение Хмм. Это означает, что вы предлагаете мне иметь is_artist (BOOLEAN) и is_member (BOOLEAN) или понравившиеся в пользовательской модели напрямую? –

+0

На этой же заметке, должна ли быть модель уведомления? –

+0

@Fazzini, ваш первый вопрос, no not boolean. Я бы сохранил эту строку. Таким образом, он открывает возможности иметь администратора и использовать ту же модель. Я даже теоретизировал использование целых чисел. Где # представляет ранг пользователя. 1 является обычным пользователем. 2 - художник, а 3 - админ и т. Д. Ваш второй вопрос, да. Если вы используете рельсы 2, то создайте модель уведомления. если вы используете рельсы 3, то нет. Просто genereate почтовая программа с 'rails g mailer my_mailer'. – Trip