如何仅更新Rails属性列表?

时间:2014-05-19 08:03:16

标签: ruby-on-rails ruby-on-rails-4

有以下代码:

@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

但是当我尝试更新所有者时,我收到一条关于空密码的消息,因为我在创建过程中使用了密码存在验证。请告诉我,是否可以仅更新通过其他验证的发送属性列表?提前致谢。

3 个答案:

答案 0 :(得分:0)

如果您使用Devise进行身份验证,则会有一个名为update_without_password的方法,这样做

@owner.update_without_password(owner_params)

答案 1 :(得分:0)

希望这个有所帮助。

has_secure_password validations: false置于工作状态,但您需要在其后进行自定义验证

答案 2 :(得分:-1)

请改用#update_attributes。看起来#update运行所有参数的验证(即使缺少参数)。