2017-08-18 17 views
1

この質問は、コードの品質と組織に関連しています。Rails - cronジョブを配置するための正しい場所

私はRailsアプリケーションを開発しており、私たちは毎日実行するいくつかのcronジョブを持っています。これらのジョグはすでに働いているが、現在、私は私のモデルの内側にそれらを配置しています、例えば:

def update_boleto_orders_payment_status 
    orders = Order.boleto_unpaid_orders 
    orders.each do |o| 
     order = HTTParty.get("https...", 
        headers: {"Authorization" => "BasiC# 
{encode_auth_token}"}) 
     order_status = JSON.parse(order.body).symbolize_keys![:status] 
     o.update_column(:paid, true) if(order_status.eql? "AUTHORIZED") 
    end 
    end 

私は私の注文状況を更新するには、このメソッドを使用して、この方法は私の注文モデルの内側に位置しています。

私の質問は:レールのベストプラクティスとコンベンションを前提としていますが、私のモデルの中にこのジョブを配置するのは間違いありませんか?あるいは、私はこの種の方法を別の場所に置くべきですか?

答えて

2

最近、app/jobsディレクトリにジョブクラスを作成するのはかなり一般的です。

+0

ジョブとスケジューリングに関連するすべてのこと私は新しいディレクトリジョブの中に置くことができます、それは私のモデルの中に入れているよりも良いです:) –

+1

はい。 Railsは数年前にActiveJobと呼ばれていたフレームワークを追加しましたが、#performに対応する普通のrubyオブジェクトを書くこともできます。例:UpdateBoletoOrderPaymentsStatusJob#perform –

関連する問題