現在のコンテストが常にあるアプリがあります (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 を前の日曜日の特定の時刻に設定することもできます。sunday() クラス ( http://api.rubyonrails.org/classes/Time.html#method-i-sunday ) があるのを見ましたが、その日の特定の時間を指定する方法がわかりません。
2) 常に現在のコンテストが必要なこの状況では、それをアプリにロードするより良い方法はありますか? 新しいものが作成された場合は、キャッシュしてからリロードする方がよいでしょうか? これがどのように行われるかはわかりませんが、より効率的であるようです。
ありがとう!