在postgresql中可以使用
update products set status = 1
where status <> 1 and updated_at < '2014-04-01'
returning id;
这是最方便的,因为我得到了我刚刚更新的所有记录的ID。
有没有办法在活动记录中执行此操作?
我正在努力(非常努力)成为一个红宝石的家伙
我在这样的情况下发现漏洞抽象有点困难。
我知道update_all会返回计数 是否有允许返回的调用?
答案 0 :(得分:1)
对于Rails 4:
Product.where('updated_at < ? and not status = ?', '2014-04-01', 1).map do |product|
product.update_attribute(:status, 1)
product.id
end
答案 1 :(得分:0)
对于 Rails&lt; 4 ,您可以编写类似这样的内容
Product.where('updated_at < ? and status != ?', '2014-04-01', 1).map do |product|
product.update_attribute(:status, 1)
product.id
或强>
Product.where('updated_at < ? and status NOT IN (?)', '2014-04-01', 1).map do |product|
product.update_attribute(:status, 1)
product.id
或强>
Product.find(:all, :conditions => ['updated_at < ? and status NOT IN (?)', '2014-04-01', 1]).map do |product|
product.update_attribute(:status, 1)
product.id