2

サード パーティの支払いプロバイダー サービスからのデータを格納するテーブルを持つ MySQL データベースがあります。当社が保存するデータは、主に顧客のサブスクリプションの詳細です。残念ながら、エクスポート ファイルをダウンロードして解析し、データを取得する必要があります。私がやりたいことは、データベースのサブスクリプション end_dates を更新する毎日のジョブを設定することです。たとえば、次のようなサブスクリプション オブジェクトがあるとします。

Subscription object:
  attributes:
    id: 
    subscription_uuid: 
    account_code: 
    email: 
    current_period_ends_at:

私が知りたいのは、レールを使用してmysqlのこれらのオブジェクト current_period_ends_at datetime フィールドを更新する最も効率的な方法です。

次のようなハッシュの配列から始めています。

[{:id => 1, :subscription_uuid => 123, :account_code => 10, :email => test@test.com, :current_period_ends_at => 2013-10-02 16:37:05}]

大量のデータであるため、配列をバッチで反復処理し、データベース内の各サブスクリプション オブジェクトで rails update_attributes メソッドを呼び出すことを考えていました。賢い人がこれをどのように行うのか、または一連のサブスクリプションオブジェクトをバッチで取得し、それらをバッチで更新してプロセスを高速化する方法があるかどうか疑問に思っていますか?

4

1 に答える 1

0

create! を使用します。オブジェクトを生成して保存します。create は、複数のオブジェクトを作成して保存するために、ハッシュの配列も受け入れます。バッチ処理に関するあなたの直感は正しいです。

  params = {
    :id     => something,
    :subscription_uuid => something,
    :account_code   => something,
    :email      => something,
    :current_period_ends_at => something
  }
  Subscription.create!(params)
于 2013-10-03T06:08:51.397 に答える