0

Rails にレコードのリストがあり、これらのレコードには公開または非公開にするブール フィールドがあります。updated_at >= 30 日前になると、すべてのパブリック レコードをプライベートに変更する方法が必要です。

どこから始めればよいかわかりません。アドバイス、リンク、ヒントは大歓迎です。ありがとうございました!

ソリューション

@lol007 からの推奨に従って、いつでも gem を使用します。私が従う手順は次のとおりです。

  1. テーブル Post title:string content:text status:boolean を使用してアプリを作成し、最初にサーバーを実行して情報を追加してから、サーバーを停止して他の手順を続行します。
  2. いつでも gem を gemfile に追加し、bundle install を実行します。
  3. いつでも実行します。コンソールで config/schedule.rb ファイルを作成する
  4. models/post.rb に次のコードを追加します。

    def self.check_updated_at
      where('updated_at < ?', 30.minutes.ago).update_all({ :status => :true })
    end 
    
  5. 次のコードを config/schedule.rb に追加します。

    every 3.minutes do
      runner "Post.check_updated_at"
    end
    
  6. 私は開発に取り組んでいるので、次のコマンドを実行します。

    $ whenever --update-crontab --set environment='development'
    
  7. 次に、cron が機能していることを確認するために、次のコマンドを実行します。

    $ crontab -l
    
  8. 私の最後のステップは、Rails サーバーを実行し、アプリを動作させることです。

テストで使用した他の行は次のとおりです。

    $ whenever -w 

本番環境で cron ファイルを生成します。と

   $ crontab -r

cronファイルを削除するには、必要なものではない場合。

お時間とご意見をお寄せいただきありがとうございます。

4

3 に答える 3

0
 YourModel.update_all({:private => true}, "updated_at > 30.days.ago")
于 2013-09-18T05:55:56.970 に答える