在Rails 3.2中,update_all查询语句没有更新数据库中的'updated_at'列?

时间:2015-01-07 06:34:30

标签: ruby-on-rails

EmailBulk.where(id: params[:email_bulk][:id]).update_all(html_content: params[:email_bulk][:html_content], subject: params[:email_bulk][:subject])

语句不会更新email_bulk.updated_at列?为什么?我也应该像这样发送时间

EmailBulk.where(id: params[:email_bulk][:id]).update_all(html_content: params[:email_bulk][:html_content], subject: params[:email_bulk][:subject], updated_at: Datetime.now.utc )
如果是这样的话?如何以活动记录创建的格式创建DateTime:2015-01-06 06:44:55。我不喜欢硬编码时间和格式

1 个答案:

答案 0 :(得分:0)

全部更新,此方法构造单个SQL UPDATE语句并将其直接发送到数据库。它不会实例化所涉及的模型,也不会触发Active Record回调或验证。传递给update_all的值不会通过ActiveRecord的类型转换行为。它应该只接收可以按原样传递给SQL数据库的值。

因此,它不会触发回调或验证 - 并且时间戳更新是在回调中进行的.update_at是回调