控制器中的[column_name]_changed?
不起作用,但在模型中可以吗?
original_name = "test1"
new_name = "test2"
@user = User.find(params[:id])
puts"__________#{@user.name}" # "test1"
@user.update_attributes(params[:user])
puts"__________#{@user.name}" # "test2"
@user.name_changed? # return false is't not work
答案 0 :(得分:2)
来自fine manual:
update_attributes(attributes,options = {})
从传入的哈希中更新模型的属性并保存记录,所有记录都包含在事务中。
请注意保存记录部分。因此,在update_attributes
调用成功后,所有新值都已写入数据库,并且已更改状态不会留下任何内容。因此,所有x_changed?
方法都将返回false。
如果你想要update_attributes
之类但却没有使用save
,那么你可以改为使用assign_attributes
或attributes=
:
@user.assign_attributes(params[:user])
# or @user.attributes = params[:user]
#...
@user.save # You have to do this by hand
update_attributes
方法就是这样:
with_transaction_returning_status do
self.assign_attributes(attributes, options)
save
end
毕竟。