即使我没有更改任何属性,如何强制记录保存自己

时间:2009-10-31 16:50:00

标签: ruby-on-rails

为了清理一些不良数据,我在保存回调之前添加了一个。现在我需要强制所有模型再次保存。但是,如果我这样做,则不会发生更新操作

User.first.save

即使我没有更改任何属性,如何强制所有模型执行保存操作。

4 个答案:

答案 0 :(得分:24)

您应该可以使用touch,它会在保存时触发回调。

或者关闭partial_updates:ActiveRecord::Base.partial_updates = false

答案 1 :(得分:16)

由于Josh Rickard对已接受的答案发表评论,因为Rails 3.0.X touch不再调用验证和回调。

然而,您可以使用model.update_attribute(:updated_at,Time.now)手动“触摸”它并跳过验证并以这种方式调用回调。

答案 2 :(得分:2)

您仍然可以使用触摸来解决您的问题,正如 cwninja的回答指出的那样。

是的,正如 Josh Rickard 所提到的,它不会在最新的Rails中触发传统的回调。但它确实会触发 after_touch 回调。

请参阅本页底部:

http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

答案 3 :(得分:1)

如果未修改属性,则不会保存。如果您在清理期间修改了某些内容,则应该可以保存它。