Rails 3.2.13 アプリでは、多数の関連オブジェクトを持つ Order データの API をクエリし、それをデータベースに保存する必要があります。一部のレコードは既に存在する可能性があるため、存在する場合は更新し、新しい場合は作成します。一度に何千ものレコードをインポートしています。
import メソッドを使用してパフォーマンスを最適化するために、activerecord-import gem を調べていて、以下のコードを思いつきました。
def add_details(order, tax_lines)
tax_lines.each do |shopify_tax_line|
taxlines_updated << Taxline.where(:order_id => order.id).first_or_initialize(
:price => tax_line.price,
:rate => tax_line.rate,
:title => tax_line.title)
end
Taxline.import taxlines_updated, :validate => false
end
問題は、レコードが既に存在する場合は更新されず、レコードが新しい場合にのみ属性を更新することです。
各レコードで「見つかった場合 -> 属性を更新」または「見つからない場合 -> 新規」のように機能させるにはどうすればよいですか?
どうもありがとう!