4

activerecord を使用して hstore 列で複数のレコードを更新する良い方法は何ですか? 現在、次のようにループ、更新、保存しています。

time = Time.now.to_s
scoped_tasks.each do |task|
  task.data[:last_checked] = time
  task.save!
end

update_allクエリでこれを行う方法はありますか? 私が見た1つの解決策は次のようになります。

MyModel.update_all(:properties => ActiveRecord::Coders::Hstore.dump({'a' => 1}))

しかし、それに関する問題は、列全体を上書きするため、他の値が失われることです。私もこれを見ました:

MyModel.update_all("data = data || hstore('a', 'blah')")

しかし、何らかの理由で私はその価値を取り戻し0ます。また、hstore が空の場合にのみ機能するようです。

4

2 に答える 2