我有一個總是有當前比賽(由start_date和end_date datetime定義)的應用程序。我在application_controller.rb中將以下代碼作爲before_filter。在特定時間爲下一個或上一個星期日設置日期時間
def load_contest
@contest_last = Contest.last
@contest_last.present? ? @contest_leftover = (@contest_last.end_date.utc - Time.now.utc).to_i : @contest_leftover = 0
if @contest_last.nil?
Contest.create(:start_date => Time.now.utc, :end_date => Time.now.utc + 10.minutes)
elsif @contest_leftover < 0
@winner = Organization.order('votes_count DESC').first
@contest_last.update_attributes!(:organization_id => @winner.id, :winner_votes => @winner.votes_count) if @winner.present?
Organization.update_all(:votes_count => 0)
Contest.create(:start_date => @contest_last.end_date.utc, :end_date => Time.now.utc + 10.minutes)
end
end
我的問題:
1)我想改變:END_DATE的東西,在一定的時間(例如下週日晚8點)表示下週日。同樣,我可以在一定時間將start_date設置爲前一個星期日。我看到有一個星期日()類(http://api.rubyonrails.org/classes/Time.html#method-i-sunday),但不知道如何指定當天的某個時間。
2)對於這種總是想要比賽的情況,有沒有更好的方式來加載它的應用程序?緩存它會更好,然後重新加載,如果一個新的創建?不知道這將如何完成,但似乎更有效率。
謝謝!
謝謝。但最終我會如何在那些日子裏指定一個時間(例如,晚上8點)? – Marc 2012-04-05 11:31:49
答覆已更新。 – 2012-04-05 13:26:27
看起來不錯!我今晚要測試它 – Marc 2012-04-05 16:23:57