【发布时间】:2017-03-17 12:10:08
【问题描述】:
用新参数更新 Rails 记录的调用是什么,例如,存储在 hash 变量中?这个:
@user.update(hash)
会保存记录,因为我想将调用放在回调中,我不想保存它,只需准备将其正确保存在回调中。
【问题讨论】:
-
我认为在这一点上几乎每个关于 SO 的新问题都是重复的 :)
标签: ruby-on-rails ruby ruby-on-rails-5
用新参数更新 Rails 记录的调用是什么,例如,存储在 hash 变量中?这个:
@user.update(hash)
会保存记录,因为我想将调用放在回调中,我不想保存它,只需准备将其正确保存在回调中。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-5
您可以使用attributes= 设置属性但不保存记录。
@user.attributes = hash
保存对象时,新属性将持久保存在数据库中。见http://apidock.com/rails/ActiveRecord/AttributeAssignment/attributes
【讨论】:
你可以这样做:
@user.attributes = hash
或
@user.assign_attributes hash
请记住,这些都不会返回您正在处理的对象。如果你想要,试试 Object#tap:
@user.tap { |u| u.assign_attributes hash }
【讨论】: