有以下代码:
@owner = Owner.find(params[:id])
if @owner.update(owner_params)
# Some actions
else
render 'edit'
end
'所有者'模型具有名称,电子邮件,电话和2个虚拟属性(对于has_secure_password):password和password_confirmation。我想只更新姓名,电子邮件和电话:
def owner_params
params.require(:owner).permit(:name, :email, :phone)
end
但是当我尝试更新所有者时,我收到一条关于空密码的消息,因为我在创建过程中使用了密码存在验证。请告诉我,是否可以仅更新通过其他验证的发送属性列表?提前致谢。
答案 0 :(得分:0)
如果您使用Devise
进行身份验证,则会有一个名为update_without_password
的方法,这样做
@owner.update_without_password(owner_params)
答案 1 :(得分:0)
希望这个有所帮助。
将has_secure_password validations: false
置于工作状态,但您需要在其后进行自定义验证
答案 2 :(得分:-1)
请改用#update_attributes。看起来#update运行所有参数的验证(即使缺少参数)。