【发布时间】:2013-10-08 22:37:34
【问题描述】:
使用 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 为空时才有效。
【问题讨论】:
标签: ruby ruby-on-rails-3 activerecord rails-postgresql hstore