1
A
回答
3
添加日期列,如 「expires_at」,然後你運行像一個自定義的驗證:
方案A *
,如果你有一個單獨的表名爲votings
:
id | name | votes | expires_at
expires_at
是日期列
現在你的模型看起來像(voting.rb ):
class Voting < ActiveRecord::Base
validate :check_expiry_date, :on => :update
def check_expiry_date
self.errors.add('base', 'Voting is closed') if self.expired?
end
def expired?
self.expires_at < Date.today
end
end
現在在你的控制器:
@voting = Voting.find(someid)
@voting.votes += 1
if @voting.save
# everyhing ok
else
# maybe the voting is closed, check validation messages
end
溶液B
如果你有一個像2〜表的方法:
表分組表決:
id | name | expires_at
個
表投票:
id | user_id | voting_id
您需要兩個模型:
voting.rb
class Voting < ActiveRecord::Base
has_many :votes
def expired?
self.expires_at < Date.today
end
end
votes.rb
class Vote < ActiveRecord::Base
belongs_to :voting
belongs_to :user
# only one vote per user per voting
validates_uniqueness_of :user_id, :scope => :voting_id
# check expiry date
validate :check_expiry_date, :on => :create
def check_expiry_date
self.errors.add('base', 'Voting is closed') if self.voting.expired?
end
end
控制器:
@vote = Vote.new
@vote.user_id = some_user_id
@vote.voting_id = some_voting_id
if @vote.save
# everything ok
else
# maybe the voting is closed
end
創建一個新的投票:
@voting = Voting.new
@voting.name = 'President Election 2011'
@voting.expires_at = 1.year.from_now
@voting.save
相關問題
- 1. 如何在TRAC中添加字段截止日期?
- 2. 如何在magento中添加wordpress投票?
- 3. 檢票 - 設置截止日期檢票自身的資源
- 4. 如何添加截止日期Css.php文件頭(支架)
- 5. 蒙戈數據建模/截止投票(上下)
- 6. AngularJS投票系統 - 防止多投票
- 7. datepicker截止日期
- 8. 如何在OpenERP 7中提醒用戶未付清發票的截止日期?
- 9. 如何檢查截止日期比當前日期在JavaScript
- 10. 防止第二票在評論投票
- 11. 插件添加投票如digg
- 12. 如何投票投票系統?
- 13. 單擊投票上/下(Rails)後,簡單的投票系統不會添加投票數據庫?
- 14. 如何防止重複投票
- 15. 如何在Facebook牆上創建投票?
- 16. 添加截止日期一把umbraco網站頁眉
- 17. 如何添加事件到日期在fullcalender上點擊日期
- 18. jQuery datepicker - 如何填充選擇日期的截止日期
- 19. R:截止日期時間
- 20. PHP - 截止日期查詢
- 21. jQuery Datepicker截止日期
- 22. 設定截止日期軌
- 23. 截止日期估計
- 24. Qt UI截止日期
- 25. 如何長期投票工作JavaScript?
- 26. jquery.validate.js截止日期如何使用此驗證程序添加方法
- 27. 投票投票牆
- 28. 如何在magento中添加評論有用的投票系統?
- 29. 如何在表單中添加投票到我的數據庫?
- 30. 如何在表格中添加投票並將其顯示在屏幕上
優秀!做得好! – Jack