誰かがポートフォリオに株式を追加するたびに、activerecordimportgemを使用して株価履歴をインポートします。株価履歴を追加する前に、関数はまずその株式がテーブルにすでに存在するかどうかをチェックします。そうすれば、2人がGoogleの株を持っている場合でも、株価履歴に2回入力されることはありません。
しかし、これは私に同時追加を考えさせました。2人が同時にGoogleを追加し、価格履歴がモデルにまだ存在していなかった場合、関数'import'は同時に2回発生します。
それは私の質問に私をもたらします。activerecord-importは、同時に2つのインポートを防ぐためにテーブルをロックしますか?
編集:ジムのアドバイスに基づいて、私は以下を行いました:
私のStockモデルでは、を使用しafter_save
てStockHistoryにインポートする関数を実行しているため、StockHistoryを次のようにロックします。
def populatepricehistory
#columns and prices defined here
StockHistory.transaction do
StockHistory.lock
StockHistory.import columns,prices
end