常に現在のコンテスト(start_dateとend_date datetimeで定義)があるアプリがあります。私は、before_filterとしてapplication_controller.rbに次のコードを書いています。特定の時刻に次または前日の日曜日の日時を設定します。
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
私の質問は:一定時間午後8時(例えば次の日曜日)で次の日曜日意味何かにEND_DATE:
1)私が変更したいと思います。同様に、start_dateを前の日曜日に設定することもできます。私はsunday()クラス(http://api.rubyonrails.org/classes/Time.html#method-i-sunday)があるのを見ましたが、その日に特定の時間を指定する方法がわかりません。
2)現在のコンテストが常に必要なこの状況では、アプリでそれを読み込むためのより良い方法がありますか?新しいものが作成されたら、それをキャッシュしてリロードするでしょうか?どのようにこれが行われるかわからないが、より効率的であるようだ。
ありがとうございます!
ありがとうございました。しかし、最終的に私はその日にどのように時間を指定するのですか(例えば、午後8時)。 – Marc
答えが更新されました。 –
いいね!私は今夜それを試すつもりです – Marc