2012-03-28 2 views
0

Я нахожусь на этапе планирования создания приложения, где все пользователи (зарегистрированные или нет) могут голосовать каждую минуту или около того. Окно голосования должно длиться установленный период времени (например, 1 месяц). В этот момент определяется выигрышный объект, и период голосования сбрасывается и начинается со всего. Затем посетители могут оставлять комментарии о победителе за этот период. Мой вопрос, как вы думаете, лучший способ установить что-то подобное?Структура для повторяющихся бесчисленных избирательных бюллетеней

Вот мои текущие мысли, но не кажется идеальным:

1) Голосуйте модель: ENTITY_ID, contest_id, user_id (по желанию), created_at, IP_Address

  • поиск ф в db на новое голосование и посмотреть, не превышает ли время разницу между допустимым временем голосования между голосами пользователей
  • использует CAPTCHA каждое переменное количество голосов для обеспечения человека
  • расчет поел текущий подсчет голосов путем подсчета всех записей для лица для участия в конкурсе

2) Contest модель: начало и конец DateTime

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

3) Победитель модель: contest_id, ENTITY_ID

  • позволяет пользователям комментарии на прошлых победителей конкурса
+0

что вы имеете в виду наилучшим образом? Архитектура? Какой язык использовать для его реализации? – Adrian

+0

Архитектура. Я собираюсь использовать ROR. Я показал структуру модели/db, которую я рассматриваю выше. Мой вопрос - лучший способ его структурирования? – Marc

ответ

0

Не зная больше деталей, я бы с чем-то вдоль линий:

class User 
    has_many :votes 
    has_many :comments 
    has_many :contests, :through => :votes 

class Vote 
    belongs_to :user 
    belongs_to :contest 

class Contest 
    has_many :votes 
    has_many :users, :through => :votes 

class Comment 
    belongs_to :user 

Таким образом, вы можете иметь @user.votes, @contest.votes, @contest.users и т.д.

Я не вижу необходимости в модели победителей, так как это может быть просто логическим в Users. Если вам нужно, у вас всегда может быть модель Winnings, принадлежащая обоим пользователям и конкурсам, чтобы связать их.

Надеюсь, что это поможет.

+0

Спасибо. Организация/организация голосуют и выигрывают. Итак, в конце конкурса будет установлен новый экземпляр модели выигрышей с выигрышной организацией/сущностью. – Marc

 Смежные вопросы

  • Нет связанных вопросов^_^