gpt4 book ai didi

ruby-on-rails - Rails回形针:更新vs. update_attributes

转载 作者:行者123 更新时间:2023-12-03 10:31:31 26 4
gpt4 key购买 nike

当尝试通过回形针gem为我的用户模型(在avatar属性下)上传图像时,我意识到有些奇怪的事情。由于某种原因,User.update和@ user.update_attributes的行为有所不同。有人知道为什么会这样吗?

#using @user.update_attributes(user_avatar_params)
def update_profile_pic
@user = User.find(params[:id])
@user.update_attributes(user_avatar_params)
puts @user.avatar_file_name.nil? # prints false as expected
respond_to do |format|
format.html { redirect_to :back }
format.js
end
end

#using User.update(@user.id, user_avatar_params)
def update_profile_pic
@user = User.find(params[:id])
User.update(@user.id, user_avatar_params)
puts @user.avatar_file_name.nil? # prints true although successfully saves
respond_to do |format|
format.html { redirect_to :back }
format.js
end
end
这是我在user_controller.rb中的强大参数
def user_avatar_params
params.require(:user).permit(:avatar)
end

最佳答案

ActiveRecord.update的行为可能会让您失望:

Updates an object (or multiple objects) and saves it to the database, if validations pass. The resulting object is returned whether the object was saved successfully to the database or not. http://apidock.com/rails/ActiveRecord/Base/update/class



但是, update_attributes只会返回 false

这两个都使用模型级验证,因此都应保存或不保存。但是,返回值将不同。

正如@RoaringStones指出的,解决方案是使用

user = User.update(user.id, user_avatar_params)

关于ruby-on-rails - Rails回形针:更新vs. update_attributes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27684038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com