0
私はMySQLとRails 4.2.3を使用しています。私はonwers
と呼ばれるテーブルを持っており、それは常にそれを供給しているバックグラウンドジョブがあるので、2週間成長を続けるでしょう。Railsで増えているすべてのレコードを更新するには
今、私はRailsの中のすべてのOnwer
レコードを更新したいと思いますし、次は私が仕事達成てる方法です:
Owner.find_each(batch_size: 100) do |owner|
Owner.get_owner_details_from_github owner.login
end
は何だろうコードを書くための最良の方法だろうが仕事を続けている?一方では
owners
という表が、もう1つは
owners
にいくつのレコードがあるにしても、コードはその仕事をします。
答えに感謝しますが、それはポイントではありません。問題は、「オーナー」が毎回増えていることです。だから、それは一種のレースになるでしょう。 1つのジョブでは、「所有者」レコードが作成されており、他のジョブでは、同じ「所有者」レコードが更新されています。 –
'logged_in_at'という名前の' owners'テーブルにdatetime列を追加し、更新を行うときに 'Time.now'に設定します。あなたの更新ジョブは、 'logged_in_at'に対して' nil'を持っている '所有者'のみを照会してください。定期的なスケジュールで更新ジョブを実行し続けると、新しいレコードが絶えず削られます。事実の後に何を更新するかを決定するのではなく、あなたの作成ジョブがイベントをトリガできる場合は、より良いでしょう。 –