给出以下user_params:
def user_params
ActiveModelSerializers::Deserialization.jsonapi_parse!(params.to_unsafe_h)
end
我无法删除参数以执行需要删除:current_password
的特定操作。以前,下面这一行完成了这项工作:
user_params.delete(:current_password)
但是,自从实现0.10.0.rc4以来,有问题的操作会生成ActiveRecord :: UnknownAttributeError(User的未知属性'current_password'。)
user.update_without_password(user_params)
我不确定这是错误还是语法错误,所以我决定发布SO而不是他们的Github回购。
答案 0 :(得分:0)
根据BF4的要求,我在AMS Github上就此问题创建了issue #1610。与此同时,下面的原始帖子是一种解决方法,同时创建了最终修复。
我找不到删除params的方法,但使用.except(a)
就像下面的Update方法一样:
# Render the updated User using UserSerializer and the AMS Deserialization.
def update
# Check if password is blank, if so, clear :current_password
# and update without password, else updates password.
if user_params[:password].blank? || user_params[:current_password].blank?
user.update_without_password(user_params.except(:current_password,:password))
render json: user
else
if user.update_with_password(user_params)
render json: user, status: :ok
else
render json: user.errors, status: :unprocessable_entity
end
end
end