6

レールのcronソリューションは多数あり、かなり優れています。それは私がここで苦労していることではありません。

代わりに、私が問題を抱えているのは、ユーザーが独自の定期的なタスク(リマインダーなど)を作成できるようにすることです。具体的には、これらをモデル化してDBに保存する方法です(優れたUIも重要です)。そのためのコード)。Googleカレンダーはここでの良い例です(カレンダー全体ではなく、イベントを追加するためのUI)...毎日午後1時CST、月/水/金、または毎週などに実行できる必要があります。どのcronソリューションでも使用されている場合は、データベースをポーリングして、その時間に送信する必要のあるリマインダーなどを確認する必要があります。

Railsでこれに適したプラグイン/gemを見た人はいますか?そこに何かがあるようですが、私はまだそれを見つけていません。

ありがとう!

4

4 に答える 4

6

超派手なものは必要なかったので、最終的には独自のソリューションを展開しました。

基本的に、(日、週など) の 1 つであるデータベースにnext_run日時とinterval文字列の列を追加しました。next_run次に、経過した日付を検索する実行する cron ジョブをセットアップします。それらを実行しnext_run、列に基づいて将来のある時点に設定しintervalます。

シンプルですが、私のニーズには合っていました。

于 2010-10-19T18:37:38.617 に答える
1

現在、このようなプラグインを使用して繰り返しをテーブルに保存することを検討しています http://github.com/fnando/recurrence/tree/master

各リマインダーには1つの繰り返しオブジェクトがあり、リマインダーは次のオブジェクトを送信することになっているときに日時フィールドも保持します。次に、cronは...

get all reminder's whose "next_send" date has passed
for each reminder
  send it
  update the "next_send" field using the recurrence object
end

より良い解決策がある場合、または私が間違った道を進んでいる場合は、入力を常に歓迎します。

于 2009-07-21T05:06:56.073 に答える
0

私は現在この問題を抱えており、私が検討している解決策は次のとおりです。

class AllowReoccuringTasks < ActiveRecord::Migration  
    def self.up  
        add_column :tasks, :reoccuring, :boolean  
        add_column :tasks, :period, :integer  
    end
end

ここで、期間は 1 (毎日)、7 (毎週)、または 14 (隔週) のいずれかです。

毎月、平日、週末など、他の種類のスケジュールをサポートする場合は、代わりに「スケジュール」という列を追加し、定数を使用してさまざまなスケジュールの種類を表すことができます。enum pluginを使用することもできます。

于 2010-11-03T03:01:39.767 に答える