使用 activerecord 使用 hstore 列更新多条记录的好方法是什么?现在我正在循环,更新和保存这样的:
time = Time.now.to_s
scoped_tasks.each do |task|
task.data[:last_checked] = time
task.save!
end
有没有办法通过update_all
查询来做到这一点?我见过的一种解决方案如下所示:
MyModel.update_all(:properties => ActiveRecord::Coders::Hstore.dump({'a' => 1}))
但问题在于它会覆盖整个列,因此其他值会丢失。我也看过这个:
MyModel.update_all("data = data || hstore('a', 'blah')")
但出于某种原因,我会收回0
价值。它看起来也只有在 hstore 为空时才有效。