2012-03-28 50 views
0

我在大樓裏的所有用戶(註冊與否)的應用程序的規劃階段可以投票每分鐘左右。投票窗口應持續一段時間(例如1個月)。在這一點上,一個獲勝實體被定義,投票期間重新設置並開始全部。遊客可以在那段時間留下有關勝利者的評論。 我的問題是你認爲什麼是最好的方式來設置這樣的事情?結構無限重複投票競賽

這裏是我目前的想法,但似乎並不理想:

1)投票模式:ENTITY_ID,contest_id,USER_ID(可選),created_at,IP_ADDRESS

  • 搜索IP在分數新的投票,看看時間差異是否大於投票時間限制用戶之間投票
  • 使用CAPTCHA每個可變票數,以確保人類
  • calcul通過計算所有條目的實體的較量吃電流計票

2)競賽模式:開始和結束日期時間

  • 有一個每週或每月的cron作業創建的最新實例
  • votes如果當前日期在這兩個日期之間找到當前比賽
  • 單個模型允許爲比賽創建屬性(例如,特殊種類的比賽)

3)贏家模式:contest_id,ENTITY_ID

  • 允許用戶評論過去的大賽中獲獎
+0

你是什麼意思的最佳途徑?建築?用什麼語言來實現它? – Adrian 2012-03-28 14:26:14

+0

建築。我打算使用ROR。我展示了我正在考慮的模型/數據庫結構。我的問題是有更好的方法來構建它嗎? – Marc 2012-03-28 14:43:33

回答

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

我沒有看到一個優勝者模型的需求,因爲這可以只是在用戶一個布爾值。如果您需要,您可以始終擁有屬於用戶和競賽的Winnings模型,以將這兩個模型鏈接起來。

希望有所幫助。

+0

謝謝。該組織/實體被投票並獲勝。因此,在獲獎組織/實體的獎金模式的新實例將設置在比賽結束時。 – Marc 2012-03-28 16:06:09