当我尝试使用paperclip 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
@user = User.update(user.id, user_avatar_params)
时,它会打印false,正如我所预期的那样。 - Derrick Mar